У более старого расширения 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];