我试图通过php中的mysql将数据插入表中,但我经常遇到错误。我已多次查看代码,似乎无法弄清楚导致它的原因。 这是代码:
$mysql_insert_vote = "INSERT INTO tb_votes VALUES ('$user_id','$get_award_id',
'$vote_val'";
$conn->query($mysql_insert_vote) or die("SQL Error (INSERT): "
.mysqli_error($conn));
userid
,awardid
和vote_val
都具有正确的值。我已经使用echo手动检查了它们,但语句本身不起作用。
代码有什么问题?
答案 0 :(得分:2)
您的陈述需要一个右括号
$mysql_insert_vote = "INSERT INTO tb_votes VALUES ('$user_id','$get_award_id','$vote_val')";
您还需要转义输入或使用预准备语句以确保它不易受SQL注入攻击
答案 1 :(得分:0)
在查看您的代码之后,我在第一行发现了一个错误,您错过了结束括号?你有没有注意到这个错误?
$mysql_insert_vote = "INSERT INTO tb_votes VALUES ('$user_id','$get_award_id','$vote_val'");
$conn->query($mysql_insert_vote) or die("SQL Error (INSERT): ".mysqli_error($conn));
将来您可以使用http://sqlfiddle.com/等工具来帮助您识别和构建SQL代码。这些可用于许多不同的语言!
..并且您还需要转义输入或使用预准备语句以确保它不易受SQL注入攻击
答案 2 :(得分:0)
你在最后遗漏了一个括号
$mysql_insert_vote = "INSERT INTO tb_votes VALUES ('$user_id','$get_award_id','$vote_val'";
此外,您似乎尝试将变量值($ user_id)包含在引号内。如果是这样,这不是正确的方法。
直接的方式:创建另一个变量,使其包含带引号“''”的$ user_id。
最简单的调试方法是打印SQL查询字符串并使用Workbench或命令行编辑器在MYSQL中运行它。
我同意@tadman和@Machavity使用参数化查询,而不是使用字符串表示。