更新查询不起作用

时间:2011-08-14 01:14:10

标签: php mysql database

今天我遇到了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)。

3 个答案:

答案 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子句的一部分)。通常,您应该只更新实际更改的字段(主键值通常不应作为更新的一部分更改)。