无法更新行,只能插入到我的 MySQL table。语法错误 "WHERE ID =0"

Unable to UPDATE row, only INSERT to my MySQL table. Syntax Error "WHERE ID =0"

由于我是 MySQL 的新手和 PHP 新手,我遇到了一些问题。如果我使用 INSERT 命令提交我的表单,它工作正常。如果我将命令更改为 UPDATE,它找不到要更新的 'ID'。我已将 WHERE ID 替换为确切的行 ID,但返回时出现语法错误。

这是我要添加的代码:

function create()
{
    $sql = sprintf(
        "INSERT minty_config 
        (name, value) 
        VALUES
        ('%s','%s')",
        $this->db->clean($this->name),
        $this->db->clean($this->value)
    );

    $this->db->query($sql);
}

这是我要更新的代码:

function update()
{
    $sql = sprintf(
        "UPDATE minty_config  SET
        name='%s', 
        value='%s', 
        WHERE ID=%d",
        $this->db->clean($this->name),
        $this->db->clean($this->value),
        $this->ID
    );

    $this->db->query($sql);
}

我想我需要更改以下内容 php 以便我可以更新而不是插入,但每次我尝试进行更改时,我只会看到一个空白屏幕,所以出了点问题。这是代码:

    session_start();
    // Connection to server established here//
    include('../config.php');
    // Authentication of login here//
    if (!$user->authenticated)
    {
        header('Location: login.php');
        die();
    }
    //'text' is class where I have list of functions: get, set, update, create, etc. //
    if (isset($post->form_action))
    {
        $a = new text(false, $db);
        $a->name = $post->name;
        $a->value = $post->value;
    //this function works if use 'create' but when changed to 'update I get a Syntax error //   
        if (!$err)
        {
            $a->update();
            $succ = "Success!";
        }
    }

我试过类似的方法来修复此 WHERE ID 语法错误,但它 returns 是一个空白屏幕,我什至看不到表格:

    $id = (isset($get->id) && is_numeric($get->id)) ? $get->id : ((isset($post->id) && is_numeric($post->id)) ? $post->id : false);
    if (!$id) die();

如有任何帮助,我们将不胜感激。

非常感谢!

听起来你的代码在某处抛出错误。设置 error_reporting(E_ALL) 并查看是否出现任何问题。

在执行之前回显您的查询,并在 SQL 服务器上 运行 它,有效吗?

如果可行,请使用调试器单步执行代码(或仅使用 echo/print_r 语句作为断点)。

你说你遇到了错误,那是什么?

Post 您在问题中找到的任何信息,如果您仍然需要,我可能会提供更多帮助。

您的更新查询在

之前有一个额外的 , 逗号
"UPDATE minty_config  SET name='%s', value='%s', WHERE ID=%d"
                                              ^^^

应该是

"UPDATE minty_config  SET name='%s', value='%s' WHERE ID=%d"
                                              ^^

我刚刚删除了多余的逗号。这对你有用。