2

提前感谢我得到的任何帮助!

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

错误:

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

代码:

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

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

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

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

4

5 回答 5

5

Don't use single quote (') on your table name, use (`) instead ( samething lower case of [ ~ ] on your keyboard ).

于 2012-11-14T04:08:54.533 回答
0

date 是保留关键字,您不能在查询中使用它,请使用date

于 2012-11-14T04:14:34.457 回答
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)
于 2012-11-14T04:15:23.603 回答
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)
于 2012-11-14T04:23:44.150 回答
0

You may need tick marks around date:

$query="DELETE FROM 'dbname' WHERE `date`='$exdate'";

However, from your error, it appears the syntax is not correct earlier. If you are doing some sort of escaping, that may be causing this error.

于 2012-11-14T04:09:15.310 回答