提前感谢我的帮助!
我正在用PHP编写一个脚本来删除所有用户(此时)已设置的到期日期。我收到MySQL语法错误,我无法弄清楚我做错了什么。
错误:
查询失败:您的SQL语法出错;查看与您的MySQL服务器版本相对应的手册,以便在第1行''tablename'WHERE date ='01'附近使用正确的语法
CODE:
$query="DELETE FROM 'tablename' WHERE date='$exdate'";
我做了一个回声,只是为了测试变量是否正确传递,它是。
编辑:“dbname”更改为“tablename”只是为了澄清,我的错误。
已解答:再次感谢您的帮助,我没有使用正确的“引号语法”。谢谢!
答案 0 :(得分:5)
不要在表名上使用单引号('),而是使用(`)(键盘上的[〜]小写)。
答案 1 :(得分:0)
date
周围可能需要勾号:
$query="DELETE FROM 'dbname' WHERE `date`='$exdate'";
但是,从错误中看,语法似乎不早。如果您正在进行某种转义,则可能会导致此错误。
答案 2 :(得分:0)
日期是保留关键字,您无法在查询中使用它,请使用date
答案 3 :(得分:0)
如果有任何东西使用魔术引号(`)
,请不要单引用你的表名您不应该通过连接字符串来构建查询。
为了避免SQL注入的潜在问题,使用准备好的查询是明智的。
我刚刚在mysql服务器上确认了这个
mysql> delete from 'sessions' where `last_activity` = 0;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''sessions' where `last_activity` = 0' at line 1
mysql> delete from sessions where `last_activity` = 0;
Query OK, 0 rows affected (0.00 sec)
答案 4 :(得分:0)
最简单的纠正
$query="DELETE FROM tablename WHERE date='$exdate'";
最佳(最安全)版本
$query="DELETE FROM `tablename` WHERE `date`='$exdate'";
说明:
tableNames, columnnames etc are enclosed in quotes like `name` instead of 'name'
Enclosing them in `` is optional usually, but if your tablename,columnane is some
what special word e.g 'table' then you can use `table` and not simply table
您可以在这里使用
`tablename` (best) tablename (simplest) but not 'tablename'(worng)