Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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 执行更新查询后,如何获取受影响的行数?_Php_Mysql - Fatal编程技术网

Php 执行更新查询后,如何获取受影响的行数?

Php 执行更新查询后,如何获取受影响的行数?,php,mysql,Php,Mysql,代码如下: $count = 0; $update = $db->query("UPDATE $table SET price = '$price' WHERE sku = '$sku'"); if ($update->affected_rows) { $count++; } echo $count; 执行上述代码后,db中的行将得到更新,但$count的值为0。根据我的假设,$count的值应该是122,因为122行被更新了。

代码如下:

$count = 0;
$update = $db->query("UPDATE $table SET price = '$price' WHERE sku = '$sku'");
        if ($update->affected_rows) {
        $count++;
        }   
echo $count;
执行上述代码后,db中的行将得到更新,但$count的值为0。根据我的假设,$count的值应该是122,因为122行被更新了。我不明白为什么

当我使用下面的代码时

if (!$update->affected_rows) {
            $count++;
            }   
美元计数变为212

我无法理解这种行为。我希望有人解释上面的代码及其行为方式?

尝试下面的代码

$update = $db->query("UPDATE $table SET price = '$price' WHERE sku = '$sku'");
        if ($update) {
       printf("Records Updated: %d\n", mysql_affected_rows());
        }   
希望这有帮助。

尝试下面的代码

$update = $db->query("UPDATE $table SET price = '$price' WHERE sku = '$sku'");
        if ($update) {
       printf("Records Updated: %d\n", mysql_affected_rows());
        }   

希望这有帮助。

$db->query返回对象结果 试试这个: $infected_rows=$db->execUPDATE table SET field='value'; echo$受影响的行。'受影响'
如需了解更多信息,请返回对象结果 试试这个: $infected_rows=$db->execUPDATE table SET field='value'; echo$受影响的行。'受影响'
更多信息

是的,这会有所帮助。非常感谢。但我仍然不明白为什么受影响的行在这种情况下不起作用。@gandrap如果要更新的价格相同,则受影响的行仍然为false。因为我想要的是在不受影响的行时插入新行。如果使用if$update,我无法执行该操作。@gandrap,如果您的值与之前影响行的值相同,则始终返回false,根据您的条件,请阅读返回值部分:@jogesh_pi是的,我知道。问题是它不是相同的值,但仍然返回false。例如,以前的价格值为100,更新后的价格值为110。是的,这有帮助。非常感谢。但我仍然不明白为什么受影响的行在这种情况下不起作用。@gandrap如果要更新的价格相同,则受影响的行仍然为false。因为我想要的是在不受影响的行时插入新行。如果使用if$update,我无法执行该操作。@gandrap,如果您的值与之前影响行的值相同,则始终返回false,根据您的条件,请阅读返回值部分:@jogesh_pi是的,我知道。问题是它不是相同的值,但仍然返回false。例如,以前的价格值为100,更新后为110。