为什么此UPDATE查询不更新我的表?

时间:2017-02-13 05:25:16

标签: php mysql pdo sql-update

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

<?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";
?>

我收到的错误是:

  

&#34; 0记录成功更新&#34;。

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

enter image description here

我试过改变我的“Aktivasyon”#39;键入intchar但它也不起作用。

编辑: 我想把它变成一个功能;

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 :(得分:0)

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

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

答案 1 :(得分:0)

您使用的是错误的引号。您基本上是说&#34;更新此表,当字符串 KullaniciID 等于字符串 5 &#34;时,将此字符串设置为某些内容。这当然不是真的。

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

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

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