MySQL语法错误,使用PHP

时间:2012-11-14 04:06:09

标签: php mysql

提前感谢我的帮助!

我正在用PHP编写一个脚本来删除所有用户(此时)已设置的到期日期。我收到MySQL语法错误,我无法弄清楚我做错了什么。

错误:

  

查询失败:您的SQL语法出错;查看与您的MySQL服务器版本相对应的手册,以便在第1行''tablename'WHERE date ='01'附近使用正确的语法

CODE:

$query="DELETE FROM 'tablename' WHERE date='$exdate'";

我做了一个回声,只是为了测试变量是否正确传递,它是。

编辑:“dbname”更改为“tablename”只是为了澄清,我的错误。

已解答:再次感谢您的帮助,我没有使用正确的“引号语法”。谢谢!

5 个答案:

答案 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)