2012-09-27 34 views
6

Tôi có truy vấn này:Đếm bao nhiêu hàng chèn Từ SQL Query cuối

INSERT INTO db1.outbox (DestinationNumber, TextDecoded) 
SELECT User.CellPhone, '$SMSMessage' as TextDecoded 
FROM db2.User 
WHERE User.PurchaseDate BETWEEN 2012-01-01 AND 2012-01-31 

nó nhiều hàng chèn vào bảng 'hộp thư đi'. nhưng tôi không biết có bao nhiêu hàng được chèn vào. làm thế nào để có số hàng chèn từ cú pháp SQL? cảm ơn.

cập nhật tôi '-1' như kết quả của lệnh này:

$insertedRows = mysql_query("SELECT ROW_COUNT()"); 
$rowInserted = mysql_fetch_array($insertedRows); 
$rowInserted = $rowInserted[0]; 
echo $rowInserted; 

nhưng tôi thấy có 27 hàng lắp trên bàn của tôi. tôi đã làm gì sai?

+0

Lý do "SELECT ROW_COUNT()" không hoạt động cho bạn hat truy vấn của bạn không còn là truy vấn gần đây nhất bởi thời gian PHP trả về quyền kiểm soát cho bạn. Mysql trả về -1 vì PHP đã viện dẫn đã "SELECT ROW_COUNT()" và "SELECT LAST_INSERT_ID()". Sau khi chọn một hàm thông tin, kết quả của "ROW_COUNT()" là -1. Đó là lý do tại sao bạn cần sử dụng biến PHP đặc biệt '' 'mysql_affected_rows' '', đã lưu trữ giá trị từ "SELECT ROW_COUNT()" sau khi nó thực hiện truy vấn của bạn. –

Trả lời

9

đặt điều này trên báo cáo cuối cùng của bạn;

SELECT ROW_COUNT(); 

UPDATE 1

thế nào về việc sử dụng mysql_affected_rows, ví dụ

<?php 

    $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); 
    if (!$link) 
    { 
     die('Could not connect: ' . mysql_error()); 
    } 
    mysql_select_db('mydb'); 

    /* this should return the correct numbers of deleted records */ 
    mysql_query('you SQL QUERY HERE'); 
    printf("Records deleted: %d\n", mysql_affected_rows()); 

?> 
+0

Tôi chỉ cố gắng sử dụng hàm ROW_COUNT(), nhưng cho tôi -1 là kết quả. trên thực tế, tôi đã chèn 27 hàng. xem cập nhật của tôi về bài đăng này ở trên. –

+1

@RobertHanson oh tôi thấy rằng bạn đang sử dụng 'PHP', hãy thử sử dụng' mysql_affected_rows() 'như được thấy trong hướng dẫn sử dụng PHP này, http://php.net/manual/en/function.mysql-affected-rows.php –

+0

@RobertHanson xem câu trả lời cập nhật của tôi. –

1

Dưới đây là một số khả năng:

» Nếu bạn có một cột AUTO_INCREMENT, bạn có thể lấy số hàng trước và sau khi chèn

» SELECT 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 (doc)

» Bạn có thể sử dụng mysqli_affected_rows (kể từ mysql_ chức năng không được dùng nữa) để nhận được số hàng bị ảnh hưởng trong một hoạt động MySQL trước đó (doc)

$link = mysqli_connect("localhost", "my_user", "my_password", "world"); 

if (!$link) { 
    printf("Can't connect to localhost. Error: %s\n", mysqli_connect_error()); 
    exit(); 
} 

/* Insert rows */ 
mysqli_query($link, "INSERT INTO myTable VALUES (1)"); 
printf("Affected rows (INSERT): %d\n", mysqli_affected_rows($link)); 
Các vấn đề liên quan