好的,又回来了,after my initial question。但是,这一次,我实现了一个错误回调,只是为了帮助我在这里跟踪,我将给出代码和错误回调:
$Query = mysqli_query($Connection, "INSERT INTO database (ip, isp, user) VALUES ('$IP', '$ISP', '$User')");
这是错误:
错误:您的SQL语法出错;查看与MySQL服务器版本对应的手册,以便在'database(ip,isp,user)VALUES('184.107.171.51','AS32613 iWeb Technologies In'第1行)附近使用正确的语法
有关这里发生了什么的任何线索?今天早些时候,我修复了旧问题,然后在我尝试添加以检查数据库中是否存在该值之后,它就开始了。
非常感谢任何帮助,无论是消极的还是积极的,谢谢。
答案 0 :(得分:6)
好吧,“数据库”是MySQL中的保留关键字 - 试试这个:
$Query = mysqli_query($Connection, "INSERT INTO `database` (`ip`, `isp`, `user`) VALUES ('$IP', '$ISP', '$User')");
重音字符用于转义可能的关键字。但是,当使用mysqli_query而不是mysql_query时,我建议使用Bill的方法。
答案 1 :(得分:3)
在错误的上下文中使用MySQL reserved word会导致解析器出现歧义和混淆。例如,单词DATABASE
是保留字。
您可以通过分隔它们来使用保留字作为标识符(请注意,在大多数其他编程语言中不能这样做)。在MySQL中,使用back-ticks作为分隔符而不是单引号!
$Query = mysqli_query($Connection, "INSERT INTO `database` (ip, isp, user)
VALUES ('$IP', '$ISP', '$User')");
请注意,USER
不是保留字。你不需要划分它,但它没有任何伤害。
PS:这与您的问题没有直接关系,但请了解使用prepared queries,而不是直接将PHP变量插入到SQL字符串中。
$Query = mysqli_prepare($Connection, "INSERT INTO `database` (ip, isp, user)
VALUES (?, ?, ?)");
$Query->bind_param("sss", $IP, $ISP, $User);