首页 文章

为什么这个UPDATE查询没有更新我的表? [重复]

提问于
浏览
-1

这个问题在这里已有答案:

我正在尝试编写用户系统代码 . 除了激活,我几乎编码了我的系统 . 我可以选择并向我的表插入数据,但现在我试图激活帐户并卡住了 .

<?PHP
include "db_settings.php";
$stmt = $dbcon->prepare("UPDATE 'Kullanicilar' SET 'Aktivasyon' = ? WHERE 'KullaniciID'=?");
// execute the query
$stmt->execute(array('1','5'));

// echo a message to say the UPDATE succeeded
echo $stmt->rowCount() . " records UPDATED successfully";
?>

而我收到的错误是:

“0记录已成功更新” .

这是我的 table ; http://i.imgur.com/PL2eD80.png

enter image description here

我试过将'Aktivasyon'类型 int 更改为 char 但它也不起作用 .


编辑:我试图使这个功能;

function dataUpdate($tableName, $updateRow, $updateValue, $conditonRow, $conditionValue)
{
        include "db_settings.php";
        $q = $dbcon->prepare("UPDATE $tableName SET $updateRow= ? WHERE $conditonRow= ?");
        $q->execute(array($updateValue,$conditionValue));
}

我也试试这个:

...
        $q = $dbcon->prepare("UPDATE `$tableName` SET `$updateRow`= ? WHERE `$conditonRow`= ?");
        ...

如何使此功能起作用?

2 回答

  • 0

    您使用的是错误的引号 . 你基本上是在说“更新这个表,当字符串KullaniciID等于字符串5时,将这个字符串设置为某个东西”,这当然不是真的 .

    如果要指定列名,则应使用反引号 . 然后你的查询将工作 . 通常你甚至不需要那些,但由于某些原因MySQL世界总是添加它们 .

    所以要澄清一下,这是一个字符串: 'KullaniciID' ,这是一个列名: KullaniciID .

    此外,您不应该将整数作为字符串发送 . 使用更严格的数据库会导致额外的转换甚至错误 .

  • 0

    语法有错误,表和列名不能使用单引号,修改SQL:

    UPDATE `Kullanicilar` SET `Aktivasyon` = ? WHERE `KullaniciID` = ?
           ^            ^     ^          ^           ^           ^
    // Replace ' --> `
    

相关问题