PDO绑定值不起作用

时间:2017-12-15 10:23:48

标签: php mysql pdo

我想从我的表单中插入一个值到我的SQL表中。

以下表格:

   <form action="index.php?id=" method="GET">
     <input id="Trigramme" name="Trigramme" type="text" value="<?php 
      if (empty($_GET['Trigramme'])):
          echo ('');
      else:
           echo ($_GET['Trigramme']);
      endif;
       ?>">
     <input id='idFormation' type="hidden" name="id" value="<?php 
      if ($formations['ID'] <= $maxIdFormation['Max_ID']):
          echo ($formations['ID']+1);
      else:
           echo ('1');
      endif;
       ?>">
     <input type="submit">
   </form>

以下是我用于插入的功能:

function ajouterMembre($infosMembre){
    $pdo = getDb(); 

$requeteAjout = $pdo -> prepare ("INSERT INTO `users` ( `Trigramme`, `Formation_id`) VALUES (':Trigramme', ':Formation_id')");

$requeteAjout -> bindValue(':Trigramme', $infosMembre['Trigramme']);
$requeteAjout -> bindValue(':Formation_id', $infosMembre['id']);

$requeteAjout -> execute();

var_dump($requeteAjout);
var_dump( $infosMembre['id']);
var_dump( $infosMembre['Trigramme']);

return $pdo-> lastInsertId();

}

最后,这是我在HTML中使用的函数:

<?php $idNouveauMembre = ajouterMembre($_GET); ?>

我遇到的问题是SQL返回值Trigramme = :Trigrammeid = 0

我猜我的bindValue无法正常工作。但是当我试着检查时:

var_dump( $infosMembre['id']);
var_dump( $infosMembre['Trigramme']);

它返回我想插入的正确值。

3 个答案:

答案 0 :(得分:0)

$requeteAjout = $pdo -> prepare ("INSERT INTO `users` ( `Trigramme`, `Formation_id`) VALUES (':Trigramme', ':Formation_id')");

用这个

代替那行代码
$requeteAjout = $pdo -> prepare("INSERT INTO `users` ( `Trigramme`, `Formation_id`) VALUES (:Trigramme, :Formation_id)");

答案 1 :(得分:0)

不要在此处添加引号:Formation_id和另一个。

答案 2 :(得分:0)

删除prepare语句值中的单引号:

$requeteAjout = $pdo -> prepare ("INSERT INTO `users` ( `Trigramme`, `Formation_id`) VALUES (:Trigramme, :Formation_id)");