2017-03-27 19 views
0

私は、テーブル名と私のMySQLサーバ「ユーザー」にいくつかのデータをプッシュするPDOを使用していて、私は次のエラーを取得しています:SQLSTATE [HY093]:無効なパラメータ番号:パラメータは定義されていませんが、すべて定義されていますか?

[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); 
+0

あなたはこのリンクを読もうとしていますかhttp://stackoverflow.com/questions/5874383/invalid-parameter-number-parameter-was-not-defined-inserting-data –

+0

そのスレッドの回答やコメントはどれも適切ではありませんここに?すべてのパラメータが存在するようです。私はより多くの質問を単純化することを提案します:pop、:classicなど。名前付けに何か問題がないことを確認するだけです。しかし、それは正しいように見えます。 – junkfoodjunkie

+0

'$ query'は、それが必要な質問を提供するかどうかをエコーし​​ますか? –

答えて

0

私は問題を修正しました。私は単にプレースホルダの名前のためのダッシュを削除し、すべてが場所に落ちた。 「いいえ」はSQLキーワードでもあるので、それも問題の一部だと私は思う。

+1

プレースホルダの名前は間違いありません。しかし、 "いいえ"はキーワードだけで、予約されたものではありません。だから、世界の仕事は:-)でも、カラムにはダッシュも含めてはいけません。mysqlはあなたが数学をやっていると思います! – Qirel

関連する問題