2015-04-21 14 views
8

Tôi đã cập nhật hồ sơ của mình dựa trên điều kiện cụ thể sau đó tôi muốn biết các id từ các hàng bị ảnh hưởng.Chọn các hàng bị ảnh hưởng cuối cùng

$sql = mysqli_query("update table set xxx='".$x."' where yyy='".$y."'"); 

Bây giờ sau khi thực hiện truy vấn này, tôi muốn biết các hàng bị ảnh hưởng.

+1

Con số này là có sẵn trong 'mysqli_affected_rows', các hàng (và id) bản thân bạn sẽ phải chọn trong truy vấn khác. – jeroen

+0

@jeron tôi cần hồ sơ anh trai –

+1

Lưu ý phụ: bạn dường như đang chiến đấu chống lại cú pháp đường. Làm thế nào về ''CẬP NHẬT foo SET xxx = ?, yyy =?''? Ngay cả '" CẬP NHẬT foo SET xxx = '$ x', yyy = '$ y' "' có thể đọc được nhiều hơn. –

Trả lời

-1

Trước tiên, bạn phải tìm nạp ID và rồi thực hiện cập nhật. Nếu đồng thời là một mối quan tâm, bạn có thể sử dụng một locking read (với điều kiện là bảng của bạn được lưu trữ trong một động cơ giao dịch, chẳng hạn như InnoDB):

$mysqli->autocommit(FALSE); 

$select = $mysqli->prepare('SELECT id FROM table WHERE yyy = ? FOR UPDATE'); 
$select->bind_param('s', $y); 
$select->execute(); 

$update = $mysqli->prepare('UPDATE table SET xxx = ? WHERE yyy = ?'); 
$update->bind_param('ss', $x, $y); 
$update->execute(); 

$mysqli->commit(); 

// here are the IDs that were updated 
$select->bind_result($id); 
while ($select->fetch()) printf('Updated id: %s\n', $id); 
-1

Cách duy nhất tôi có thể nghĩ đến là hàng sleect đầu tiên đó sẽ là cập nhật với các báo cáo cập nhật, đó là:

$updatableIds = mysqli_query("SELECT id FROM table WHERE xxx !='".$x."' AND yyy='".$y."'"); 

chúng ta thêm xxx !='".$x."' bởi vì nếu giá trị của xxx đã là $x những hàng sẽ không bị ảnh hưởng.

Tiếp theo bạn chạy bản cập nhật

$sql = mysqli_query("update table set xxx='".$x."' where yyy='".$y."'"); 
-1
UPDATE users 
SET type = '3' 
WHERE type = '2'; 

Để tìm hiểu hàng bị ảnh hưởng cuối cùng ngay sau khi tuyên bố, nó cần được cập nhật một chút như sau:

UPDATE users 
SET type = '3', 
    user_id=LAST_INSERT_ID(user_id) 
WHERE type = '2'; 

// chức năng sử dụng

function updateAndGetId($value) 
    { 
     $query ="UPDATE users 
    SET type = '$value', 
     user_id=LAST_INSERT_ID(user_id) 
    WHERE type = '2'"; 
     mysql_query($query) 
    return mysql_insert_id(); 
    } 
    $lastUpdatedRow = updateAndGetId(3); 

Trong trường hợp bạn chỉ muốn cập nhật hàng thực sự thay đổi, hãy thêm cập nhật có điều kiện của user_id thông qua LAST_INSERT_ID và kiểm tra xem dữ liệu có thay đổi trong hàng hay không.

+0

thế nào điều này sẽ làm việc cho nhiều hàng ? –

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