Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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更新查询,如果值没有';你不会变吗?我该怎么查呢?_Php_Mysql - Fatal编程技术网

Php Mysql更新查询,如果值没有';你不会变吗?我该怎么查呢?

Php Mysql更新查询,如果值没有';你不会变吗?我该怎么查呢?,php,mysql,Php,Mysql,在执行UPDATE语句时,若值和新值相同,则rowCount不会更改。但就我的申请而言,这也是一个成功。所以,无论值是否更改,我如何检查更新是否成功 $stmt = $conn->prepare('UPDATE users SET name = :name WHERE id = :id'); $result = $stmt->rowCount(); // 1 if ($result == 1) {echo "success!";} 我认为这是无法正常完成的,但您可以使用另一个专

在执行UPDATE语句时,若值和新值相同,则rowCount不会更改。但就我的申请而言,这也是一个成功。所以,无论值是否更改,我如何检查更新是否成功

$stmt = $conn->prepare('UPDATE users SET name = :name WHERE id = :id');

$result = $stmt->rowCount(); // 1

if ($result == 1) {echo "success!";}

我认为这是无法正常完成的,但您可以使用另一个专栏寻求帮助

将列
计数器
添加到
用户
表中。然后在每次更新时增加这个值

$stmt = $conn->prepare('UPDATE users SET name = :name, counter = counter + 1 WHERE id = :id');

$result = $stmt->rowCount(); // 1

if ($result == 1) {echo "success!";}
所以现在,不管值
name
是否改变,
计数器每次都会改变,如果成功,它每次都会返回
1


或者正如Damodaran所回答的,在进行更新时,您可以使用当前日期时间,而不是
计数器。

我同意Legionar。但我没有使用count,而是添加了一列,其中包含上次更新时间。因此,我可以使用它来获取在特定时间后更新的条目。通过这种方式,我可以减少发送到客户端的条目数量。最终决定取决于您的要求

$stmt = $conn->prepare('UPDATE users SET name = :name, updateTime = currentTime WHERE id = :id');   
$result = $stmt->rowCount(); // 1
if ($result == 1) {echo "success!";}

您不是在执行查询,只是在准备查询。因此,
rowCount()
将报告无效的行数(指上次执行的查询),因为在执行带有特定参数值的预处理语句后,还没有行受到影响,并且系统事先不知道会有多少行

您应该在执行语句时检查是否成功。如果执行成功,
execute()
方法将返回
true
,否则返回
false
。因此,如果执行成功是您唯一需要的,那么您应该遵循以下原则:

$stmt = $conn->prepare('UPDATE users SET name = :name WHERE id = :id');

$result = $stmt->execute($params); // <-- execute first!

if ($result) {echo "success!";}
$stmt=$conn->prepare('updateusers SET name=:name其中id=:id');

$result=$stmt->execute($params);//@user2092317:如果要更新相同的值,受影响的Num rows将返回0…这如何返回1的
rowCount()
?这是一个不必要的复杂问题。如果我必须对数据库中的所有表都这样做会怎么样?我认为这个答案是最好的atm。所有其他答案都使一项简单的任务复杂化了。