Получить количество строк, совпадающих с запросом UPDATE с PHP mysqli

У более старого расширения mysql есть CLIENT_FOUND_ROWS подключения CLIENT_FOUND_ROWS , но я не смог найти эквивалент для mysqli .

У меня есть запрос на update и вы хотите узнать, сколько строк соответствовало предложению where , а не сколько фактически было изменено (как указано mysqli -> affected_rows ).

Единственный способ, который я догадался до сих пор, – разобрать mysqli -> info (который выглядит примерно так: Rows matched: 40 Changed: 40 Warnings: 0 ) с регулярным выражением. Но это кажется взломанным.

он находится в вариантах mysqli_real_connect .

Также введен в PDO :: MySQL в PHP 5.3.

Я использовал следующий код:

 // Parse the digits from the info string that has the following format: // Rows matched: 0 Changed: 0 Warnings: 0 preg_match_all('!\d+!', $mysqli->info, $m); return $m[0][0]; 

Вы можете запустить SELECT COUNT(*) с тем же предложением WHERE перед запуском UPDATE. Это даст вам количество строк, которые будут сопоставлены.

Также SELECT ROW_COUNT() может SELECT ROW_COUNT() количество строк, на которые влияет запрос на обновление.

Я сделал функцию взрыва на результатах, возвращаемых командой info, а затем сделал индекс [1].

$ affected = explode (":", $ connection-> info); $ rowsAffected = $ affected [1];