我可以向你的帮助询问这个问题吗

       $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 面板(进行必要的替换)中。有人能帮我吗?谢谢


料青山看我应如是
浏览 108回答 1
1回答

交互式爱情

使用参数时不需要引号:$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 格式的连字符),但在许多国家它们可能是字母数字。很像电话号码,尽管它看起来像数字,但它仍然是一个字符串。(我怀疑你打算用邮政编码进行数学计算。截断前导零可能会有问题。)
打开App,查看更多内容
随时随地看视频慕课网APP