PHP PDO执行错误42000

时间:2018-01-07 13:27:25

标签: php mysql pdo

我收到42000 PDO错误,我知道这与MySQL保留字有关,我把所有列名都放在反引号中。但是,这还没有解决我的问题。我在Windows 10上使用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"]
                       )); 
    }
}

我知道这可能是一个愚蠢的简单回答,我可能只是陷入困境,我知道已经有一些类似的问题。但是,非常感谢任何帮助,谢谢你提前。

2 个答案:

答案 0 :(得分:1)

似乎您将空值分配给不承认它的列。

如果您使用的是自动增量ID,则可以省略value子句中的null值和into子句中的id引用

<form  action="selectAselectB.php" method="post">

答案 1 :(得分:0)

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

name是MySQL中的保留字,你只需要在反引号中使用它,你的语句也不需要NULL值。