详细
基本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:
发生了MySQL错误 您的查询:
INSERT INTO todos SET startMonth = 6 AND startDay = 27 AND startYear = 2011 AND&gt; startTime = 1309216538 WHERE todo = todo 2
错误:(1064)您的SQL语法中有错误;查看与您的&gt; MySQL服务器版本对应的手册,以便在第1行的'WHERE todo = todo 2'附近使用正确的语法
我已经尝试过每一种我能想到的方式。从更改查询到“INSERT INTO todos SET startMonth ...”等
我已经以可能的方式编码$todo
变量(即addslashes,magic_quotes_pgc(即使它已被弃用......我变得绝望),htmlentities,mysql_real_escape_string ......我能找到的一切和/或者想到)。
答案 0 :(得分:3)
根据MySQL's documentation,您不能在WHERE
语句中使用INSERT
子句。您还有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));
答案 1 :(得分:1)
INSERT INTO todos SET startMonth = 6 AND startDay = 27 AND startYear = 2011 AND >startTime = 1309216538 WHERE todo = todo 2
应该是
UPDATE todos SET startMonth = 6, startDay = 27, startYear = 2011 WHERE startTime = 1309216538 AND todo = 2;
您对更新语句的正确语法感到困惑。 AND是一个逻辑运算符。通过update语句分配值时,需要使用逗号。 INSERT!=更新。
那,你的陈述还有其他一些疯狂的事情。无论哪种方式,只要您的命名/架构正确
,第二个语句就应该有效答案 2 :(得分:1)
除了弗朗索瓦解释的INSERT
中的两个错误之外,您正在运行一个($query
)并打印另一个($q
):
$result = mysql_query($query) --- $query is not
or die("A MySQL error has occurred.<br />Your Query: " . $q --- same with $q
. "<br /> Error: (" . mysql_errno() . ") " . mysql_error());