1

我试图解决这个错误很长一段时间,也许我是盲人,但我看不出有什么问题。

$query = "INSERT INTO `130225` (`vote`,`ip`) VALUES (".$_POST['130225'].",".$_SERVER['REMOTE_ADDR'].");";
4

3 回答 3

6

theIP没有用单引号括起来(如果它是一个字符串),

$query = "INSERT INTO `130225` (`vote`,`ip`) VALUES (".$_POST['130225'].",'".$_SERVER['REMOTE_ADDR']."');";
//                                                                        ^                           ^

作为旁注,SQL Injection如果变量的值(s)来自外部,则查询很容易受到攻击。请看下面的文章,了解如何预防。通过使用PreparedStatements,您可以摆脱在值周围使用单引号。

于 2013-02-26T15:26:42.050 回答
1

看起来您在值所在的位置缺少一些“'”。

$query = "INSERT INTO `130225` (`vote`,`ip`) VALUES ('".$_POST['130225']."','".$_SERVER['REMOTE_ADDR']."');";

如果将查询粘贴到数据库中,则更容易对查询进行故障排除。会有一个有用的(有时不是..)错误消息。

我从您查询中得到的错误是

#1054 - Unknown column 'text here' in 'field list'

谷歌这个错误,会有如何解决它的提示。

于 2013-02-26T15:27:55.107 回答
0

最好使用准备好的语句来避免类似的问题。像这样,您无需担心报价。

$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');

查询必须如下所示:

$stmt = $mysqli->prepare("INSERT INTO 130225 (vote,ip) VALUES (?,?));

然后绑定参数:

$stmt->bind_param('ss', $_POST['130225'],$_SERVER['REMOTE_ADDR']);

ETC...

于 2013-02-26T16:11:16.320 回答