php - WHERE 子句上的 MySQL 错误 #1064

标签 php mysql sql mysql-error-1064

详细信息

  • Mac OS X 雪豹 10.6.7
  • MAMP 版本 1.7.2
  • PHP 版本 5.3.4
  • MySQL 5.0.41
  • 表类型:MyISAM
  • 编码:UTF-8 统一码 (utf8)
  • 整理:utf8_unicode_ci

基本的 MySQL“INSERT”查询:

$startMonth = $date->getMonth();
$startDay = $date->getDay();
$startYear = $date->getYear();
$startTime = $date->getTime();

$query = sprintf("INSERT INTO todos 
                  VALUES (startMonth, startDay, startYear, startTime)
                  VALUES (%d, %d, %d, %d)
                   WHERE todo = '%s'",
                  mysql_real_escape_string($startMonth),
                  mysql_real_escape_string($startDay),
                  mysql_real_escape_string($startYear),
                  mysql_real_escape_string($startTime),
                  mysql_real_escape_string($todo));

$result = mysql_query($query) or die("A MySQL error has occurred.<br />Your Query: " . $q . "<br /> Error: (" . mysql_errno() . ") " . mysql_error());

这是打印出的 mysql_error:

A MySQL error has occurred.
Your Query:
INSERT INTO todos SET startMonth = 6 AND startDay = 27 AND startYear = 2011 AND >startTime = 1309216538 WHERE todo = todo 2
Error: (1064) 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 'WHERE todo = todo 2' at line 1

我已经尝试了所有我能想到的方法。从将查询更改为“INSERT INTO todos SET startMonth...”等。

我已经以各种可能的方式对 $todo 变量进行了编码(即 addslashes、magic_quotes_pgc(即使它已被弃用......我变得绝望)、htmlentities、mysql_real_escape_string......我的一切可以找到和/或想到)。

最佳答案

根据 MySQL's documentation ,您不能在 INSERT 语句中使用 WHERE 子句。您还有 2 个 VALUES 子句。看起来您的第一个 VALUES 子句正在定义您要插入的字段,而不是值。

如果您尝试INSERT,那么您需要这样做:

$query = sprintf("INSERT INTO todos (todo, startMonth, startDay, startYear, startTime)
                  VALUES ('%s', %d, %d, %d, %d)",
                  mysql_real_escape_string($todo)
                  mysql_real_escape_string($startMonth),
                  mysql_real_escape_string($startDay),
                  mysql_real_escape_string($startYear),
                  mysql_real_escape_string($startTime));

关于php - WHERE 子句上的 MySQL 错误 #1064,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6500338/

相关文章:

php - 从日期字段中选择特定数据

php - 如果变量 $whereEmail 和 $whereNotEmail 为空或 null,sql 查询应选择所有行

PHP session 在服务器上出现问题,但在本地主机上没有

php - 通过 Modal Bootstrap 传递数据并获取 php 变量?

mysql - 关闭 MySQL 查询浏览器会终止它发起的所有正在运行的查询吗?

php - 我如何在 codeigniter 中执行此操作

mysql - 比较 2 个相似表中的 2 行,只返回具有不同值的列名

mysql - 除了某些列之外,如何进行 LEFT OUTER JOIN?

javascript - 以不同的顺序输出数据

javascript - PHP-PDO : How would I wrap some values return into javascript to be rendered on a view?