$pdo=preparedbuser(); $check = $pdo->prepare('UPDATE adress SET city="?", adres="?", number="?", postalcode="?" WHERE id_FK="?"'); $check->bindParam(1, $city, PDO::PARAM_STR); $check->bindParam(2, $adres, PDO::PARAM_STR); $check->bindParam(3, $number, PDO::PARAM_STR); $check->bindParam(4, $postalcode, PDO::PARAM_INT); $check->bindParam(5, $user, PDO::PARAM_INT); $check->execute(); if ($check->rowCount() > 0){ echo'inserito';UPDATE 查询不起作用。我在查询中替换的变量是正确的。数据库设置正确。我的 sql 没有返回任何错误;并尝试将查询复制并粘贴到 My sql 面板(进行必要的替换)中。有人能帮我吗?谢谢
1 回答
交互式爱情
TA贡献1712条经验 获得超3个赞
使用参数时不需要引号:
$check = $pdo->prepare('UPDATE adress SET city=?, adres=?, number=?, postalcode=? WHERE id_FK=?');
数据库引擎知道类型并将相应地处理它们。使用带有查询参数的准备好的语句的主要好处之一是让数据库引擎处理它。事实上,您已经告诉 PDO 这些类型是什么:
PDO::PARAM_STR
旁注:邮政编码不应是整数/数字值,就像您在此处所做的那样:
$check->bindParam(4, $postalcode, PDO::PARAM_INT);
邮政编码是一个字符串。在许多国家(例如我居住的美国),邮政编码是数字字符(虽然在这里它们可能包含 +4 格式的连字符),但在许多国家它们可能是字母数字。很像电话号码,尽管它看起来像数字,但它仍然是一个字符串。(我怀疑你打算用邮政编码进行数学计算。截断前导零可能会有问题。)
- 1 回答
- 0 关注
- 107 浏览
添加回答
举报
0/150
提交
取消