PHP / MySQL:INSERT INTO,变量列名不起作用

时间:2012-10-01 21:10:38

标签: php mysql variables insert insert-into

我已经使用了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表中包含以下列:movieIDuserIDyesNoyes

对于我能做些什么不同的任何想法?我必须忽略一些非常明显的事情。

2 个答案:

答案 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