我试图解决这个错误很长一段时间,也许我是盲人,但我看不出有什么问题。
$query = "INSERT INTO `130225` (`vote`,`ip`) VALUES (".$_POST['130225'].",".$_SERVER['REMOTE_ADDR'].");";
theIP
没有用单引号括起来(如果它是一个字符串),
$query = "INSERT INTO `130225` (`vote`,`ip`) VALUES (".$_POST['130225'].",'".$_SERVER['REMOTE_ADDR']."');";
// ^ ^
作为旁注,SQL Injection
如果变量的值(s)来自外部,则查询很容易受到攻击。请看下面的文章,了解如何预防。通过使用PreparedStatements
,您可以摆脱在值周围使用单引号。
看起来您在值所在的位置缺少一些“'”。
$query = "INSERT INTO `130225` (`vote`,`ip`) VALUES ('".$_POST['130225']."','".$_SERVER['REMOTE_ADDR']."');";
如果将查询粘贴到数据库中,则更容易对查询进行故障排除。会有一个有用的(有时不是..)错误消息。
我从您查询中得到的错误是
#1054 - Unknown column 'text here' in 'field list'
谷歌这个错误,会有如何解决它的提示。
最好使用准备好的语句来避免类似的问题。像这样,您无需担心报价。
$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...