我已经使用了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
时遇到了问题。
vote
表中包含以下列:movieID
,userID
,yesNo
和yes
。
对于我能做些什么不同的任何想法?我必须忽略一些非常明显的事情。
答案 0 :(得分:0)
正如Marc B指出的那样,使用... or die(mysql_error()
引导我解决问题。这显示了我无法设置重复键的错误...我忘了auto increment
votes
表的主键。因此,每次尝试voteID
时,它都会尝试创建1
INSERT INTO votes
。
$postVote = mysql_query(...) or die(mysql_error());
这解决了我的挑战。但是,Tim G指出使用PDO
是一种比mysql_query()
更好的方法。通过一点阅读,Tim G对PDO可能是正确的。基于PHPEveryday's Tutorial,我可以重写我的插入语句:
// 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's Tutorial: PDO for MySQL - Error Handling上了解有关它的更多信息。
答案 1 :(得分:-1)
INSERT INTO votes (movieID,userID,yesNo,$vote)
并将$vote
替换为vote