这个问题在这里已有答案:
我正在尝试编写用户系统代码 . 除了激活,我几乎编码了我的系统 . 我可以选择并向我的表插入数据,但现在我试图激活帐户并卡住了 .
<?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
我试过将'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 回答
您使用的是错误的引号 . 你基本上是在说“更新这个表,当字符串KullaniciID等于字符串5时,将这个字符串设置为某个东西”,这当然不是真的 .
如果要指定列名,则应使用反引号 . 然后你的查询将工作 . 通常你甚至不需要那些,但由于某些原因MySQL世界总是添加它们 .
所以要澄清一下,这是一个字符串:
'KullaniciID'
,这是一个列名:KullaniciID
.此外,您不应该将整数作为字符串发送 . 使用更严格的数据库会导致额外的转换甚至错误 .
语法有错误,表和列名不能使用单引号,修改SQL: