2014-01-28 2 views
0

나는이 복제본처럼 들리지만, 하나의 쿼리로 여러 행을 추가 할 생각이 아니라 이미 작동하고 있습니다. 문제는 하나의 행만 삽입해야한다는 것입니다.하나의 쿼리에 여러 데이터베이스 행 삽입

이 작업을 수행하는 두 개의 코드가 있습니다. 한 첫 번째 - 등록 페이지 : 다음

$user = DB::getInstance()->insert('users', array(
    'username' => 'Sam', 
    'password' => 'password', 
    'salt' => 'salt' 

)); 

하고 실제로 별도의 PHP 클래스에서 쿼리 수행 무엇을 : 아주 조금이

public function insert($table, $fields = array()) { 

    $keys = array_keys($fields); 

    $values = ''; 

    $x = 1; 



    foreach($fields as $field) { 
     $values .= "?"; 
     if($x < count($fields)) { 
      $values .= ', '; 
     } 
     $x++; 
    } 

    $sql = "INSERT INTO {$table} (`" . implode('`, `', $keys) . "`) VALUES ({$values})"; 
    if(!$this->query($sql, $fields)->error()) { 
     return true; 
    } 
    return false; 
}public function query($sql, $params = array()) { 
    $this->_error = false; 
    if($this->_query = $this->_pdo->prepare($sql)) { 
     $x = 1; 
     if(count($params)) { 
      foreach($params as $param) { 
       $this->_query->bindValue($x, $param); 
       $x++; 
      } 
     } 

     if($this->_query->execute()) { 
      $this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ); 
      $this->_count = $this->_query->rowCount(); 
     } else { 
      $this->_error = true; 
     } 
    } 

    return $this; 
} 

,하지만 난 그냥 포함하고 싶었다 모두. 이것은 현재 작동하고 있습니다, 내 데이터베이스에 기록을 입력, 유일한 문제는 매 2 때마다 입력한다는 것입니다. 을 heres SCREENSHHOT 내 데이터베이스의

:

당신은 내가 잠시 동안 지금이 코드를 통해 진행되고 한 ID 년대에서 볼 수 있듯이

enter image description here

. 나는 무언가가 terrifically 작은 것은 그것을 떨어져 던지고있는 느낌을 가지고 있지만, 나는 그것을 찾을 수없는 것 같아요 눈의 신선한 쌍의 도움이 필요합니다.

+0

삽입 인 것으로 확인되는 것은 한 번만 호출됩니다. 또한 삽입 시간을 결정하기 위해 스키마에 시간 소인을 추가하는 것이 좋습니다. –

+0

@kzarns 내가 추가 한 코드의 첫 번째 줄은 삽입 함수가 파일의 아무 곳에서나 호출되는 유일한 시간입니다. 그리고 제가 말할 수있는 한, 첫 번째 엔트리는 페이지가 처음 실행될 때 발생하고, 두 번째 엔트리는 페이지가 모든 리소스를로드 한 후에 나타납니다. –

답변

0

고쳐졌습니다. 저는 Wordpress와 header.php 파일을 실행하는 코드의 첫 번째 비트에서 실행하고 있습니다. 어떤 점에서 페이지에서 두 번 실행되는 것으로 밝혀졌고 단순히 "페이지"에 코드를 포함시켜야했습니다. (하지만 당연히 php는 wordpress 페이지에서 실행되기를 원치 않으므로 exec PHP 플러그인을 사용해야합니다.) 그러나 어떤 경우 이건 고정되어 있습니다. 감사합니다