0

私はINSERT INTO何百回も使用しましたが、それはしばらくの間であり、私はこれに夢中になっています:

//Database Connection

$movieID = 41154;
$userID = 15;
$vote = 'yes';

$postVote = mysql_query("INSERT INTO votes (movieID, userID, yesNo, $vote) VALUES ('$movieID', '$userID', 1, 1)");

データベースに正常に接続してテーブルからデータを取得することはできますvotesが、何らかの理由で、の使用に問題がありINSERT INTOます。

次の列がテーブルに存在しますvotemovieID、、、、および。userIDyesNoyes

私が違ったやり方で何ができるかについて何か考えはありますか?私は非常に明白な何かを見落としているに違いありません。

4

2 に答える 2

0

... or die(mysql_error()Marc Bが指摘したように、を使用すると、私の問題につながります。これにより、重複キーを設定できなかったというエラーが表示されました...テーブルauto incrementの主キーを忘れました。votesしたがって、 を作成しようとするたびvoteIDにを作成しようとし続けました。1INSERT INTO votes

$postVote = mysql_query(...) or die(mysql_error());

これで私の課題は解決しました。PDOただし、Tim G は、 を使用する方が を使用するよりもはるかに優れたアプローチであると指摘していmysql_query()ます。少し読んでみると、Tim G はおそらく PDO について正しいでしょう。PHPEveryday's Tutorialに基づいて、Insert ステートメントを次のように書き直すことができます。

// database connection
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

//set variables
$movieID = 41154;
$userID = 15;
$vote = 'yes';

//query/insert statement
$sql = "INSERT INTO votes (movieID,userID,yesNo,$vote) VALUES (:movieID,:userID, :yesNo, :$vote)";
$q = $conn->prepare($sql);
$q->execute(array(':movieID'=>$movieID,
                  ':userID'=>$userID)),
                  ':yesNo'=>1)),
                  ':$vote'=>1));

を使用する代わりに、or die()エラーPDOと例外を処理する別の方法もあります。詳細については、PHPHash.org のチュートリアル: PDO for MySQL - エラー処理 を参照してください。

于 2012-10-04T14:48:31.100 に答える
-1

INSERT INTO votes (movieID,userID,yesNo,$vote)

$voteと置き換えますvote

于 2016-03-15T10:50:58.160 に答える