php - SQLSTATE[HY093] : Invalid parameter number: parameter was not defined, 但我已经定义了所有这些?

标签 php mysql pdo

我正在使用 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/

相关文章:

php - 我怎样才能简单地返回 PDO 中的对象?

php - 更新 mysql 表中的部分值

php - laravel 5.2 如何将另一个表的数据插入到另一个表中?

php - 使第二个选择框的选项根据第一个选择框进行填充。两者都是 PHP 数组

php - 从数据库收到不必要的价格扩展

php - 使用 PDO for MySQL 时存储自动递增 ID

php - SQL语法: passing variable to SQL select query

php - 使用 ACF 编号字段作为 WooCommerce 自定义产品类型的价格

mysql - 将该列声明为唯一有什么意义吗?

mysql - 对mysql中的评估顺序感到困惑