2011-12-02 22 views
11

Với php/mysql làm cách nào tôi có thể nhận được số hàng mà truy vấn bị ảnh hưởng?PHP/mysql nhận được số hàng bị ảnh hưởng của câu lệnh UPDATE

những gì tôi đã cố gắng cho đến nay:

$result = mysql_query($q); 
mysql_num_rows($result); 

nhưng nó nói rằng Warning: mysql_num_rows(): đối số cung cấp không phải là một giá trị MySQL kết quả tài nguyên

+3

http://php.net/manual/en/function.mysql-affected-rows.php – AllisonC

+0

@AllisonC bạn nên gửi đó như là một câu trả lời .. :) – SERPRO

+0

cảnh báo chỉ ra truy vấn không thành công hơn là bạn đang sử dụng hàm sai. Bạn nên thực hiện xử lý lỗi thích hợp. –

Trả lời

15

nếu bạn đang sử dụng PDO (tôi muốn giới thiệu), đối với truy vấn trực tiếp exec() trả về số hàng bị ảnh hưởng. cho Prepared Statements có phương thức được gọi là rowCount().

nếu bạn đang sử dụng the mysql-functions, có mysql_affected_rows().

EDIT:
có vẻ như bạn đang sử dụng hàm mysql. mysql_num_rows, đó là những gì bạn đang sử dụng, trả về độ dài của tập kết quả của bạn (ví dụ: SELECT-Statement). những gì bạn cần sử dụng là mysql_affected_rows (như đã nói).

+1

cảm ơn vì đã chỉ ra phương pháp tương ứng cho các câu lệnh đã chuẩn bị! – Igor

+1

** Cảnh báo ** Tiện ích mở rộng này không được chấp nhận trong PHP 5.5.0 và nó đã bị xóa trong PHP 7.0.0 [reference] (http://de2.php.net/manual/en/function.mysql-affected-rows .php # function.mysql-affected-rows-refsynopsisdiv) – Ale

5

Bạn cần mysql_affected_rows

+0

cảm ơn, nhưng ngay cả sau đó tôi nhận được lỗi này: Cảnh báo: mysql_affected_rows(): cung cấp đối số không phải là một tài nguyên MySQL-Link hợp lệ – clamp

+1

Bạn cần cung cấp 'mysql_affected_rows' với mã định danh kết nối, chứ không phải bản ghi kết quả, như được viết trên http: //php.net/manual/en/function.mysql-affected-rows.php – Pateman

+0

** Cảnh báo ** Phần mở rộng này đã không được chấp nhận trong PHP 5.5.0, và nó đã được gỡ bỏ trong PHP 7.0.0 [reference] (http: //de2.php.net/manual/en/function.mysql-affected-rows.php#function.mysql-affected-rows-refsynopsisdiv) – Ale

2

kẹp,

bạn cần cung cấp một nguồn lực -mysql_affected_rows, không phải là một kỷ lục kết quả. Xem các liên kết mà những người khác đã đăng để biết thêm thông tin.

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); 
$result = mysql_query($q); 
echo mysql_affected_rows($link); 
6

Bạn cũng có thể muốn sử dụng một hàm ROW_COUNT(), ví dụ -

UPDATE table1 SET column1 = 100 WHERE column2 = 10; 
SELECT ROW_COUNT(); 

Từ tài liệu tham khảo - ROW_COUNT() trả về số hàng thay đổi, xóa, hoặc chèn vào bởi báo cáo kết quả cuối cùng nếu nó là một UPDATE, DELETE, hoặc INSERT ...

0

Whe cũng có thể làm điều đó bằng PDO:

$db = new PDO('', '', '')// your connection 
$sql = "UPDATE tb_table SET rowname = value WHERE rowid = 1"; 
$query = $db->query($sql); 
echo $query; 
+0

$ sql phải được thay thế bằng yêu cầu của riêng bạn – nekiala

Các vấn đề liên quan