Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MYSQL更新只返回TRUE,不返回FALSE?_Php_Mysql_Pdo - Fatal编程技术网

Php MYSQL更新只返回TRUE,不返回FALSE?

Php MYSQL更新只返回TRUE,不返回FALSE?,php,mysql,pdo,Php,Mysql,Pdo,我用这个来更新一个表。validator是一个随机生成的20个字符的字符串,与其他变量一起用于验证数据的有效性 在我看来,如果Validator和FixtureID匹配同一行,则表应该只更新Response +-----------+----------------------+----------+ | FixtureID | Validator | Response | +-----------+----------------------+----------+ |

我用这个来更新一个表。
validator
是一个随机生成的20个字符的字符串,与其他变量一起用于验证数据的有效性

在我看来,如果
Validator
FixtureID
匹配同一行,则表应该只更新
Response

+-----------+----------------------+----------+
| FixtureID | Validator            | Response |
+-----------+----------------------+----------+
|         1 | 9eb593bd154b655019ad | U        |
|         1 | 4b80ac0ac204be8968e4 | U        |
|         2 | a2d278612994d3010595 | U        |
|         2 | c01171d690d5dfb141ff | U        |
|         3 | 22cd6e5b7f6dd6e76366 | U        |
//PHP脚本

    $query = "
        UPDATE 
            invites 
        SET 
            Response=:response 
        WHERE 
            Validator=:validator
            AND
            FixtureID=:FixtureID 
        ";
    $query_params = array(
        ':response'=>'Y',
        ':FixtureID'=>'1',
        ':validator'=>'9eb593bd154b655019ad'
    );
    $stmt = $db->prepare($query);
    $result = $stmt->execute($query_params);

    if ( $result ) {
        echo 'Success';
    } else {
        echo 'Invalid';
    }
但是,我可以将验证器更改为
x
$result
仍然返回true

我真的很想知道为什么会发生这种情况?
非常感谢。

它返回
true
,因为您的查询已成功运行。事实上,它没有改变数据库中的任何内容并不重要

$count = $stmt->rowCount(); 
if ( $count > 0 ) {
     echo 'Updated'; 
} else {
     echo 'Not updated'; 
}
PDO无法猜测您想要的至少是一个更新。它运行查询,如果没有错误,则查询成功


如果你需要你的应用程序来处理这些情况,你可能需要考虑首先运行<代码>选择计数(*)<代码> >相同的<代码> 条件,并向用户报告没有更新的内容。

< p>它返回<代码>真< /代码>,因为您的查询已成功运行。事实上,它没有改变数据库中的任何内容并不重要

PDO无法猜测您想要的至少是一个更新。它运行查询,如果没有错误,则查询成功


如果你需要你的应用程序来处理这种情况,你可能需要考虑首先运行<代码>选择计数(*)<代码> >相同的<代码> < < /C> >条件,并向用户报告没有更新。

如果有错误,它只返回<代码> false <代码>。没有更新任何内容时不是错误。
:响应'=>'Y',
?您的列显示
U
。这是一个关于行为的问题吗?因此,即使没有
FixtureID
Validator
同时存在的行,这也不被认为是一个错误,或者“False”?哎呀,我只是看到了
mysql
标记并很快回答了。。。在本例中,您将检查
rowCount()
我看不出这个问题被忽略的原因。如果有错误,它只返回
FALSE
。没有更新任何内容时不是错误。
:响应'=>'Y',
?您的列显示
U
。这是一个关于行为的问题吗?因此,即使没有
FixtureID
Validator
同时存在的行,这也不被认为是一个错误,或者“False”?哎呀,我只是看到了
mysql
标记并很快回答了。。。在本例中,您将检查
rowCount()
我看不出此问题被忽略的原因,而此代码可能会回答此问题,并提供有关此代码为什么和/或如何回答此问题的其他上下文,以提高其长期价值。虽然此代码可能会回答此问题,提供关于此代码为什么和/或如何回答此问题的附加上下文可提高其长期价值。