今天我遇到了PHP的大问题。我正在尝试更新MySQL数据库中的一行。最大的问题是因为如果我直接在phpMyAdmin中插入但不在我的PHP脚本中插入,则查询有效。
按照我的查询(这是$ sqlQuery的值):
UPDATE my_table SET id = '64', title = 'test', another_column = 'asdasdasdasd 2', category = '1', author = '1', status = '0', column = '0', date_created = '2011-08-13 15:33:54' WHERE id = '64'
在我的脚本中,我创建了一个循环来生成“SET”和“WHERE”之间的代码,因为它来自数组。
此外,在您询问我之前如果连接已打开,我已使用此代码检查(下方)并返回“已打开”:
if (!$conn->connection) echo "closed";
else echo "opened";
我的脚本运行查询:
if (mysql_query($sqlQuery, $conn->connection)) {
$sqlResult = array(
"status" => "ok",
"result" => "edited"
);
} else {
$sqlResult = array(
"status" => "error",
"result" => "$sqlQuery"
);
}
它总是返回“else”数组(status = error和result = $ sqlQuery)。
答案 0 :(得分:3)
您应该echo mysql_error();
在尝试调试之前输出错误消息,但您的错误可能是由column = '0'
引起的,因为column
是MySQL中的保留字,您必须< / em>用`column` = '0'
答案 1 :(得分:2)
你为什么要设置id = '64' WHERE id = '64'
?无论如何,Id都是INT
,你不应该引用它们。
另外,将"result" => "$sqlQuery"
更改为"result" => $sqlQuery
并执行var_dump($sqlQuery)
以协助调试。
答案 2 :(得分:1)
您的id
字段是否为自动递增主键?如果是这样,那么你将无法在查询中设置它(你不应该这样,因为它是你的WHERE
子句的一部分)。通常,您应该只更新实际更改的字段(主键值通常不应作为更新的一部分更改)。