我试图解决这个错误很长一段时间,也许我是盲目但我没有看到什么是错的。
$query = "INSERT INTO `130225` (`vote`,`ip`) VALUES (".$_POST['130225'].",".$_SERVER['REMOTE_ADDR'].");";
答案 0 :(得分:6)
IP
未附加单引号(,如果它是字符串),
$query = "INSERT INTO `130225` (`vote`,`ip`) VALUES (".$_POST['130225'].",'".$_SERVER['REMOTE_ADDR']."');";
// ^ ^
作为旁注,如果变量的值( s )来自外部,则查询易受SQL Injection
攻击。请查看下面的文章,了解如何防止它。通过使用PreparedStatements
,您可以摆脱在值周围使用单引号。
答案 1 :(得分:1)
看起来你错过了一些你的价值所在的“'”。
$query = "INSERT INTO `130225` (`vote`,`ip`) VALUES ('".$_POST['130225']."','".$_SERVER['REMOTE_ADDR']."');";
如果将查询粘贴到数据库中,则更容易对查询进行疑难解答。将会有一个有用的(有时不是......)错误消息。
我从您的查询中得到的错误是
#1054 - Unknown column 'text here' in 'field list'
谷歌此错误,将有关于如何解决它的提示。
答案 2 :(得分: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']);
等...