簡體   English   中英

PDO准備的帶有占位符的聲明不起作用

[英]PDO prepared statement with placeholder not work

我在執行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的新手。謝謝

在此處刪除單引號

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

正確的聲明將是

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

您還可以將backtick(`)與列名一起使用,但不能將單引號引起來。

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

使用以下代碼

        $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);

         }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM