我正在尝试编写用户系统代码。除了激活,我几乎编码了我的系统。我可以选择并将数据插入到我的桌子中,但现在我试图激活帐户并卡住了。
<?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
我试过改变我的“Aktivasyon”#39;键入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`= ?"); ...
如何使此功能有效?
答案 0 :(得分:0)
语法有错误,表名和列名不能使用单引号,修改SQL:
UPDATE `Kullanicilar` SET `Aktivasyon` = ? WHERE `KullaniciID` = ?
^ ^ ^ ^ ^ ^
// Replace ' --> `
答案 1 :(得分:0)
您使用的是错误的引号。您基本上是说&#34;更新此表,当字符串 KullaniciID 等于字符串 5 &#34;时,将此字符串设置为某些内容。这当然不是真的。
如果要指定列名,则应使用反引号。然后你的查询将工作。通常你甚至不需要那些,但由于某种原因,MySQL世界总是添加它们。
所以要澄清一下,这是一个字符串:'KullaniciID'
,这是一个列名:`KullaniciID`
。
此外,您不应将整数作为字符串发送。使用更严格的数据库会导致额外的转换甚至错误。