2015-02-27 5 views
0

Я пытаюсь использовать PDO bindValue, но не работает на моей стороне.Вставка с использованием PDO bindValue в php

public static function insert($tableName, $columnValues = array()) { 
     $columns = array_keys ($columnValues); 
     $columns = '`' . implode ('`,`', $columns) . '`'; 
     $values = null; 
     $x = 1; 
     $y = 1; 
     foreach ($columnValues as $value) { 
      $values .= '?'; 
      if ($x < count ($columnValues)) { 
       $values .= ','; 
      } 
      $x ++; 
     } 
     $sql = "INSERT INTO {$tableName} ($columns) VALUES($values)" . '</br>'; 
     if ($sqlString = DatabaseConnection::getConnectionInstance()->pdo->prepare ($sql)) { 
      foreach ($columnValues as $value) { 
       $sqlString->bindValue ($y, $value); 
       $y ++; 
      } 
      if ($sqlString->execute()) { 
       echo 'executed'; 
      } 
     } 

     return false; 
    } 
+0

вы пробовали это? http://php.net/manual/en/pdostatement.bindvalue.php –

+0

Вы получили сообщение об ошибке? Если так, то, что это? – MegaAppBear

ответ

0

Я изменил вашу функцию для использования ленивого переплета, см. PDO info. ПРИМЕЧАНИЕ: Ваш implode() был не совсем прав. Я добавил эхо, чтобы показать результаты, которые следует удалить после тестирования.

public static function insert($tableName, $columnValues = array()) { 
     $columns = array_keys($columnValues); 
     $params = array_values($columnValues);// Array to hold values for lazy binding 
     $columns = '`' . implode ("`,`", $columns) . '`'; 
     $values = null; 
     $x = 1;/* 
     $y = 1;*/ 
     foreach ($columnValues as $value) { 
      $values .= '?'; 
      if ($x < count ($columnValues)) { 
       $values .= ','; 
      } 
      $x ++; 
     } 
     $sql = "INSERT INTO {$tableName} ($columns) VALUES($values)" . '</br>'; 
     if ($sqlString = DatabaseConnection::getConnectionInstance()->pdo->prepare ($sql)) { 
      echo $sql;//For Testing 
      echo "<br>";//For Testing 
      var_dump($params);//For Testing 
      if ($sqlString->execute ($params)) { 
       echo 'executed'; 
      } 
     } 

     return false; 
    } 

Эта функция производит

INSERT INTO test (`Peter`,`Ben`,`Joe`) VALUES(?,?,?) 

array(3) { [0]=> int(35) [1]=> int(37) [2]=> int(43) } 

От

$columnValues = array("Peter"=>35, "Ben"=>37, "Joe"=>43); 
$tableName ="test"; 
insert($tableName, $columnValues) 
+0

на самом деле я не получаю никакой ошибки -amrhady –

+0

Мне пришлось изменить функцию, чтобы уклониться от bindValue, поскольку нет eror и no + ve result.thanks –

+0

Нет 'bindValue()' в моей функции? –

Смежные вопросы