С php / mysql, как я могу получить количество строк, на которые повлиял запрос?
что я пробовал до сих пор:
$result = mysql_query($q); mysql_num_rows($result);
но он говорит, что предупреждение: mysql_num_rows (): предоставленный аргумент не является допустимым ресурсом результата MySQL
если вы используете PDO (который я бы рекомендовал), для прямого запроса exec()
возвращает количество затронутых строк. для подготовленных rowCount()
– метод, называемый rowCount()
.
если вы используете mysql-функции , есть mysql_affected_rows()
.
РЕДАКТИРОВАТЬ:
похоже, что вы используете mysql-функции. mysql_num_rows
, который вы используете, возвращает длину вашего набора результатов (например, для SELECT-Statement). вам нужно использовать mysql_affected_rows
(как уже говорилось).
Вы также можете использовать функцию ROW_COUNT () , например –
UPDATE table1 SET column1 = 100 WHERE column2 = 10; SELECT ROW_COUNT();
Из справки – ROW_COUNT () возвращает количество строк, измененных, удаленных или вставленных последним оператором, если это UPDATE, DELETE или INSERT …
Вам нужно mysql_affected_rows
зажим,
вам необходимо предоставить ресурс mysql_affected_rows
, а не запись результата. См. Ссылки, опубликованные другими пользователями для получения дополнительной информации.
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); $result = mysql_query($q); echo mysql_affected_rows($link);
http://php.net/manual/en/function.mysql-affected-rows.php Действительно, просто прочитайте руководство.
Whe также может сделать это с помощью PDO:
$db = new PDO('', '', '')// your connection $sql = "UPDATE tb_table SET rowname = value WHERE rowid = 1"; $query = $db->query($sql); echo $query;