php pdo执行错误42000

pvabu6sv  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(420)

我得到一个42000pdo错误,我知道这与mysql保留字有关,我把我所有的列名都放在反勾号中。然而,这并没有解决我的问题。我在windows10上使用xampp,我想知道它是否可能是apache或mysql错误,而不是php语法错误?

class ItemList {

private $pdo;

public function add() {
  $stmt = $this->pdo->prepare("INSERT INTO `item` (`ID`, `userID`, `name`, `description`, `price`, `link`, `image`) 
                                           VALUES (NULL, :userID, :name, :description, :price, :link, :image)");

  $stmt->execute(array(':userID' => $_SESSION['userID'], 
                        ':name' => $_REQUEST["name"],
                        ':name' => $_REQUEST["name"],
                        ':description' => $_REQUEST["description"],
                        ':price' => $_REQUEST["price"],
                        ':link' => $_REQUEST["link"],
                        ':image' => $_REQUEST["image"]
                       )); 
    }
}

我知道这可能是一个愚蠢的简单答案,我可能只是卡住了,我知道有一些类似的问题已经在那里。但任何帮助都将不胜感激,提前谢谢。

w6mmgewl

w6mmgewl1#

似乎您为一个不允许空值的列分配了空值。
如果您使用的是autoincrement id,那么可以省略value子句中的null值和into子句中的id引用

public function add() {
     $stmt = $this->pdo->prepare("INSERT INTO `item` 
        ( `userID`, `name`, `description`, `price`, `link`, `image`) 
 VALUES ( :userID, :name, :description, :price, :link, :image)");

}
m1m5dgzv

m1m5dgzv2#

$stmt = $this->pdo->prepare("INSERT INTO item 
    ( userID, `name`, description, price, link, image) 
    VALUES ( :userID, :name, :description, :price, :link, :image)");

name在mysql中是一个保留字,您只需要在backticks中使用它,而且您的语句也不需要空值。

相关问题