PDO准备的声明,占位符不起作用

时间:2014-01-12 06:01:26

标签: php mysql pdo

执行PDO时遇到一些问题。 没有错误,没有任何反应。代码如下:

$stmt = $dbh->prepare("INSERT INTO `member_accounts` ('firstname','lastname','email','password') VALUES (:fname,:lname,:e,:pw)");
                 $arr = array(
                    ':fname' => $_POST['firstname'],
                    ':lname' => $_POST['lastname'],
                    ':e' => $_POST['email'],
                    ':pw' => $_POST['password'],
                    );
                 $stmt->execute($arr);

有人看到了这个问题吗?我是PDO的新人..谢谢

2 个答案:

答案 0 :(得分:1)

在此处删除单引号

('firstname','lastname','email','password')

正确的陈述将是

$stmt = $dbh->prepare("INSERT INTO `member_accounts` (firstname,lastname,email,password) VALUES (:fname,:lname,:e,:pw)");

您也可以使用带有列名但不是单引号的反引号(`)。

$stmt = $dbh->prepare("INSERT INTO `member_accounts` (`firstname`,`lastname`,`email`,`password`) VALUES (:fname,:lname,:e,:pw)");

答案 1 :(得分:0)

使用以下代码

        $sql="INSERT INTO `member_accounts`   
                     (firstname,lastname,email,password)  VALUES    
                      (:fname,:lname,:e,:pw)";
        $stmt = $dbh->prepare($sql);
          //pdo $stmt is false if any error occur
          if($stmt)
         {

             $arr = array(
                ':fname' => $_POST['firstname'],
                ':lname' => $_POST['lastname'],
                ':e' => $_POST['email'],
                ':pw' => $_POST['password'],
                );
             $stmt->execute($arr);

         }