2013-10-08 121 views
-2

我试图在php中通过mysql插入数据到表中,但我经常得到一个错误。我经历了许多次代码,似乎无法弄清楚是什么原因造成的。 下面是代码: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)); 

useridawardidvote_val都具有正确的价值观。我已经使用echo手动检查过它们,但声明本身不起作用。

代码有什么问题?

+4

请在编写任何**更多SQL接口代码之前,您必须阅读[正确的SQL转义](http://bobby-tables.com/php)以避免严​​重的[SQL注入漏洞]( http://bobby-tables.com/)。当使用'mysqli'时,您应该使用参数化查询和['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)将用户数据添加到您的查询中。 **从不**使用字符串插值来实现这一点。 – tadman

+2

您错过了VALUES的右括号(...' –

+0

什么是错误? – GolezTrol

回答

2

你的语句需要一个右括号

$mysql_insert_vote = "INSERT INTO tb_votes VALUES ('$user_id','$get_award_id','$vote_val')"; 

您还需要或者逃避你输入或使用准备好的语句,以确保它不容易受到SQL注入

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注入

0

您在年底

$mysql_insert_vote = "INSERT INTO tb_votes VALUES ('$user_id','$get_award_id','$vote_val'"; 

还缺少一个括号,看起来你正试图在引号中包含变量值($ user_id)。如果是这样,这是不正确的。

直言:创建另一个变量,以便它包含引号“''”的$ user_id。

最简单的调试方法是打印SQL Query字符串并使用Workbench或命令行编辑器在MYSQL中运行它。

我同意@tadman和@Machavity使用参数化查询,而不是使用字符串表示。