gpt4 book ai didi

php - PDOStatement::execute() 返回 true 但数据未更新

转载 作者:搜寻专家 更新时间:2023-10-31 20:42:11 24 4
gpt4 key购买 nike

我不知道为什么,这个准备好的查询不起作用:下面的 php 代码是正确的(没有任何警告或通知),但相应的数据没有更新。对于类似的更新,数据库已正确更新,但不是此表。

<?php

error_reporting(E_ALL);
ini_set('display_errors', 'On');
$pdo = new PDO('mysql:dbname=test;host=localhost', 'root', '');
$sql = 'UPDATE `ml_user` SET `username` = :username, `password` = :password, `email` = :email, `active` = :active, `last_login` = :last_login WHERE `id_user` = :id_user';
$sth = $pdo->prepare($sql);
var_dump($sth); // object(PDOStatement)#39 (1) { ["queryString"]=> string(165) "UPDATE `ml_user` SET `username` = :username, `password` = :password, `email` = :email, `active` = :active, `last_login` = :last_login WHERE `id_user` = :id_user" }
$datas = array(
':id_user' => 1, ':username' => 'my username',
':password' => 'ae25ff724d069dcb1a7fff05616ad6abc1',
':email' => 'username@example.com',
':active' => 1, ':last_login' => 1382990654,
);
$res = $sth->execute($datas);
var_dump($res); // bool(true)

sql表

CREATE TABLE `ml_user` (
`id_user` int(11) NOT NULL AUTO_INCREMENT,
`active` tinyint(1) NOT NULL DEFAULT '0',
`email` varchar(127) NOT NULL,
`username` varchar(32) NOT NULL DEFAULT '',
`password` char(50) NOT NULL,
`logins` int(10) unsigned NOT NULL DEFAULT '0',
`last_login` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id_user`),
UNIQUE KEY `uniq_username` (`username`),
UNIQUE KEY `uniq_email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

最佳答案

execute() 返回 true 时,这意味着语句“成功”,但这并不意味着它改变了任何东西。这只是意味着没有错误。

  • 由于 WHERE 子句中的条件,它可能匹配了零行。这仍然被认为是“成功”。您可以使用相同的 WHERE 子句尝试 SELECT 并获取结果,以确认它与行匹配。

  • 它可能匹配了一行或多行,但您设置的值已经是那些行上的值。您可以在执行后调用 $sth->rowCount(),找出更新影响的行数(这可能少于它匹配的行数) .

  • 如果您有此表的多个副本,您应该仔细检查您正在读取的数据库中是否进行了更改。有时我会遇到这种情况——我忘记更改应用程序配置文件,而且我没有意识到我正在更新错误的数据库。


事实证明这是问题所在——第三点的变体:

  • 如果您在不止一台服务器上工作,还要仔细检查您是否在正确的 mysql 服务器上检查更改。

关于php - PDOStatement::execute() 返回 true 但数据未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19646319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com