我正在使用 PDO 将一些数据推送到表名为“User”的 MySQL 服务器,但出现以下错误:
[26-Mar-2017 22:18:21 America/Chicago] Could not successfully add user!
[26-Mar-2017 22:18:21 America/Chicago] SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
我已经查看了有关堆栈溢出的多个其他问题,其中包含相同的错误消息,它归结为 PDO 准备和执行参数不匹配。但是,我的准备和执行是匹配的,并且我已经检查了很多次,但我仍然收到错误。这是我的代码:
$noMusicScore = $data->noMusicScore;
$classicalMusicScore = $data->classicalMusicScore;
$popMusicScore = $data->popMusicScore;
$hiphopMusicScore = $data->hiphopMusicScore;
try
{
$db = new PDO('info here......');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$query = $db->prepare("INSERT INTO User (no-music-score, classical-music-score, pop-music-score, hiphop-music-score)
VALUES (:no-music-score, :classical-music-score, :pop-music-score, :hiphop-music-score)");
$query->execute(array(':no-music-score' => $noMusicScore, ':classical-music-score' => $classicalMusicScore,
':pop-music-score' => $popMusicScore, ':hiphop-music-score' => $hiphopMusicScore));
error_log("Successfully added user!");
}
catch(PDOException $e)
{
error_log("Could not successfully add user!");
error_log($e->getMessage());
}
unset($db, $query);
最佳答案
我解决了这个问题。我只是删除了占位符名称的破折号,一切就位了。 “No”也是一个 SQL 关键字,所以我认为这也是问题的一部分。
关于php - SQLSTATE[HY093] : Invalid parameter number: parameter was not defined, 但我已经定义了所有这些?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43037473/