Hướng dẫn mysql check if update successful - kiểm tra mysql nếu cập nhật thành công

Tôi có một truy vấn cập nhật trong MySQL và tôi muốn trả về đúng hay sai dựa trên việc truy vấn cập nhật của tôi có được thực thi hay không. Có cách nào chúng ta có thể tìm thấy liệu truy vấn cập nhật có được thực thi không?

UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
IF (queryUpdated) THEN
    SELECT 1 AS updated;
ELSE
    SELECT 0 AS updated;
END IF;

hỏi ngày 14 tháng 1 lúc 16:30Jan 14 at 16:30

Hướng dẫn mysql check if update successful - kiểm tra mysql nếu cập nhật thành công

3

Tôi nghi ngờ bạn muốn chức năng

UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT() > 0 THEN 1 ELSE 0 END AS updated;
8

UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT() > 0 THEN 1 ELSE 0 END AS updated;

Đã trả lời ngày 14 tháng 1 lúc 17:25Jan 14 at 17:25

Hướng dẫn mysql check if update successful - kiểm tra mysql nếu cập nhật thành công

Mustacciomustacciomustaccio

22.8K20 Huy hiệu vàng52 Huy hiệu bạc68 Huy hiệu Đồng20 gold badges52 silver badges68 bronze badges

1

Làm cách nào để biết khi cập nhật MySQL thành công so với dữ liệu được cập nhật thực sự?

Example:

TABLE
id    city_name
1     Union
2     Marthasville

Nếu tôi chạy như sau:

$data = array('city_name', 'Marthasville');

//update record 2 from Marthasville to the same thing, Marthasville. 
$this->db->where('id', 2);
$this->db->update('table', $data);

if($this->db->affected_rows() > 0)
{
    //I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
    return TRUE;
}else{
    return FALSE;
}

Điều này sẽ trả về

UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT() > 0 THEN 1 ELSE 0 END AS updated;
9 mỗi khi câu lệnh cập nhật thành công, nhưng sai khi không có hàng thực sự được cập nhật.

Tôi cần nó trả về

UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT() > 0 THEN 1 ELSE 0 END AS updated;
9 mỗi khi câu lệnh cập nhật được thực hiện thành công ngay cả khi nó không thực sự thay đổi bất kỳ bản ghi nào.

Hướng dẫn mysql check if update successful - kiểm tra mysql nếu cập nhật thành công

Hakre

Phim thương hiệu vàng 188K50421 Huy hiệu bạc810 Huy hiệu đồng50 gold badges421 silver badges810 bronze badges

hỏi ngày 9 tháng 9 năm 2011 lúc 22:45Sep 9, 2011 at 22:45

Hướng dẫn mysql check if update successful - kiểm tra mysql nếu cập nhật thành công

Hãy xem mysql_affected_rows ()

Nó sẽ cho bạn biết nếu bất cứ điều gì thực sự được cập nhật thay vì không có gì được cập nhật thành công dẫn đến sự trở lại của sự thật.

Php.net nói:

mysql_affected_rows()

Trả về số lượng hàng bị ảnh hưởng khi thành công và -1 nếu truy vấn cuối cùng thất bại.

Bạn có thể sử dụng những điều sau đây để đạt được kết quả mong muốn của mình:

if($this->db->affected_rows() >= 0){ }

Đã trả lời ngày 9 tháng 9 năm 2011 lúc 22:59Sep 9, 2011 at 22:59

472084472084472084

17.6K10 Huy hiệu vàng61 Huy hiệu bạc81 Huy hiệu đồng10 gold badges61 silver badges81 bronze badges

5

Sau đó, bạn sẽ sử dụng mysql_query:

Các câu lệnh SQL, chèn, cập nhật, xóa, thả, v.v., mysql_query () trả về đúng khi thành công hoặc sai về lỗi.

Đơn giản như thế này:

$result = $this->db->update('table', $data);

if($result)
{
     //without error even no row updated
} else {

}

Đã trả lời ngày 9 tháng 9 năm 2011 lúc 23:17Sep 9, 2011 at 23:17

lnguyen55lnguyen55lnguyen55

7376 Huy hiệu bạc16 Huy hiệu Đồng6 silver badges16 bronze badges

2

13.2.15 & NBSP; Tuyên bố cập nhật

TABLE
id    city_name
1     Union
2     Marthasville
1 là một câu lệnh DML sửa đổi các hàng trong bảng.

Một câu lệnh

TABLE
id    city_name
1     Union
2     Marthasville
1 có thể bắt đầu với mệnh đề
TABLE
id    city_name
1     Union
2     Marthasville
3 để xác định các biểu thức bảng phổ biến có thể truy cập trong
TABLE
id    city_name
1     Union
2     Marthasville
1. Xem phần & nbsp; 13.2.17, với (biểu thức bảng phổ biến).

Cú pháp đơn bàn:

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET assignment_list
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

value:
    {expr | DEFAULT}

assignment:
    col_name = value

assignment_list:
    assignment [, assignment] ...

Cú pháp nhiều bàn:

UPDATE [LOW_PRIORITY] [IGNORE] table_references
    SET assignment_list
    [WHERE where_condition]

Đối với cú pháp bảng đơn, câu lệnh

TABLE
id    city_name
1     Union
2     Marthasville
1 cập nhật các cột của các hàng hiện có trong bảng được đặt tên với các giá trị mới. Mệnh đề
TABLE
id    city_name
1     Union
2     Marthasville
6 cho biết cột nào cần sửa đổi và các giá trị chúng nên được đưa ra. Mỗi giá trị có thể được đưa ra dưới dạng biểu thức hoặc từ khóa
TABLE
id    city_name
1     Union
2     Marthasville
7 để đặt một cột một cách rõ ràng thành giá trị mặc định của nó. Điều khoản
TABLE
id    city_name
1     Union
2     Marthasville
8, nếu được đưa ra, chỉ định các điều kiện xác định các hàng nào sẽ cập nhật. Không có mệnh đề
TABLE
id    city_name
1     Union
2     Marthasville
8, tất cả các hàng được cập nhật. Nếu mệnh đề
$data = array('city_name', 'Marthasville');

//update record 2 from Marthasville to the same thing, Marthasville. 
$this->db->where('id', 2);
$this->db->update('table', $data);

if($this->db->affected_rows() > 0)
{
    //I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
    return TRUE;
}else{
    return FALSE;
}
0 được chỉ định, các hàng được cập nhật theo thứ tự được chỉ định. Điều khoản
$data = array('city_name', 'Marthasville');

//update record 2 from Marthasville to the same thing, Marthasville. 
$this->db->where('id', 2);
$this->db->update('table', $data);

if($this->db->affected_rows() > 0)
{
    //I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
    return TRUE;
}else{
    return FALSE;
}
1 đặt giới hạn về số lượng hàng có thể được cập nhật.

Đối với cú pháp nhiều bảng,

TABLE
id    city_name
1     Union
2     Marthasville
1 cập nhật các hàng trong mỗi bảng có tên trong
$data = array('city_name', 'Marthasville');

//update record 2 from Marthasville to the same thing, Marthasville. 
$this->db->where('id', 2);
$this->db->update('table', $data);

if($this->db->affected_rows() > 0)
{
    //I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
    return TRUE;
}else{
    return FALSE;
}
3 đáp ứng các điều kiện. Mỗi hàng phù hợp được cập nhật một lần, ngay cả khi nó phù hợp với các điều kiện nhiều lần. Đối với cú pháp nhiều bảng, không thể sử dụng
$data = array('city_name', 'Marthasville');

//update record 2 from Marthasville to the same thing, Marthasville. 
$this->db->where('id', 2);
$this->db->update('table', $data);

if($this->db->affected_rows() > 0)
{
    //I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
    return TRUE;
}else{
    return FALSE;
}
0 và
$data = array('city_name', 'Marthasville');

//update record 2 from Marthasville to the same thing, Marthasville. 
$this->db->where('id', 2);
$this->db->update('table', $data);

if($this->db->affected_rows() > 0)
{
    //I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
    return TRUE;
}else{
    return FALSE;
}
1.

Đối với các bảng được phân vùng, cả hai hình thức đơn và nhiều bảng của câu lệnh này đều hỗ trợ việc sử dụng mệnh đề

$data = array('city_name', 'Marthasville');

//update record 2 from Marthasville to the same thing, Marthasville. 
$this->db->where('id', 2);
$this->db->update('table', $data);

if($this->db->affected_rows() > 0)
{
    //I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
    return TRUE;
}else{
    return FALSE;
}
6 như một phần của tham chiếu bảng. Tùy chọn này lấy một danh sách một hoặc nhiều phân vùng hoặc các phần phụ (hoặc cả hai). Chỉ các phân vùng (hoặc các phần phụ) được liệt kê mới được kiểm tra các trận đấu và một hàng không có trong bất kỳ phân vùng hoặc phân vùng nào này không được cập nhật, cho dù nó có thỏa mãn
$data = array('city_name', 'Marthasville');

//update record 2 from Marthasville to the same thing, Marthasville. 
$this->db->where('id', 2);
$this->db->update('table', $data);

if($this->db->affected_rows() > 0)
{
    //I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
    return TRUE;
}else{
    return FALSE;
}
7 hay không.

Ghi chú

Không giống như trường hợp khi sử dụng

$data = array('city_name', 'Marthasville');

//update record 2 from Marthasville to the same thing, Marthasville. 
$this->db->where('id', 2);
$this->db->update('table', $data);

if($this->db->affected_rows() > 0)
{
    //I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
    return TRUE;
}else{
    return FALSE;
}
6 với câu lệnh
$data = array('city_name', 'Marthasville');

//update record 2 from Marthasville to the same thing, Marthasville. 
$this->db->where('id', 2);
$this->db->update('table', $data);

if($this->db->affected_rows() > 0)
{
    //I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
    return TRUE;
}else{
    return FALSE;
}
9 hoặc
if($this->db->affected_rows() >= 0){ }
0, một câu lệnh
if($this->db->affected_rows() >= 0){ }
1 có giá trị khác được coi là thành công ngay cả khi không có hàng trong các phân vùng được liệt kê (hoặc phân nhóm) khớp với
$data = array('city_name', 'Marthasville');

//update record 2 from Marthasville to the same thing, Marthasville. 
$this->db->where('id', 2);
$this->db->update('table', $data);

if($this->db->affected_rows() > 0)
{
    //I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
    return TRUE;
}else{
    return FALSE;
}
7.

Để biết thêm thông tin và ví dụ, xem Phần & NBSP; 24.5, Lựa chọn phân vùng.

$data = array('city_name', 'Marthasville');

//update record 2 from Marthasville to the same thing, Marthasville. 
$this->db->where('id', 2);
$this->db->update('table', $data);

if($this->db->affected_rows() > 0)
{
    //I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
    return TRUE;
}else{
    return FALSE;
}
7 là một biểu thức đánh giá đúng cho mỗi hàng được cập nhật. Đối với cú pháp biểu thức, xem phần & nbsp; 9.5, biểu thức của Hồi giáo.

$data = array('city_name', 'Marthasville');

//update record 2 from Marthasville to the same thing, Marthasville. 
$this->db->where('id', 2);
$this->db->update('table', $data);

if($this->db->affected_rows() > 0)
{
    //I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
    return TRUE;
}else{
    return FALSE;
}
3 và
$data = array('city_name', 'Marthasville');

//update record 2 from Marthasville to the same thing, Marthasville. 
$this->db->where('id', 2);
$this->db->update('table', $data);

if($this->db->affected_rows() > 0)
{
    //I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
    return TRUE;
}else{
    return FALSE;
}
7 được chỉ định như được mô tả trong Phần & NBSP; 13.2.11, Tuyên bố chọn.

Bạn chỉ cần đặc quyền

TABLE
id    city_name
1     Union
2     Marthasville
1 cho các cột được tham chiếu trong một
TABLE
id    city_name
1     Union
2     Marthasville
1 thực sự được cập nhật. Bạn chỉ cần đặc quyền
if($this->db->affected_rows() >= 0){ }
8 cho bất kỳ cột nào được đọc nhưng không được sửa đổi.

Câu lệnh

TABLE
id    city_name
1     Union
2     Marthasville
1 hỗ trợ các công cụ sửa đổi sau:

  • Với công cụ sửa đổi

    $result = $this->db->update('table', $data);
    
    if($result)
    {
         //without error even no row updated
    } else {
    
    }
    
    0, việc thực hiện
    TABLE
    id    city_name
    1     Union
    2     Marthasville
    
    1 bị trì hoãn cho đến khi không có máy khách nào khác đọc từ bảng. Điều này chỉ ảnh hưởng đến các công cụ lưu trữ chỉ sử dụng khóa cấp bảng (chẳng hạn như
    $result = $this->db->update('table', $data);
    
    if($result)
    {
         //without error even no row updated
    } else {
    
    }
    
    2,
    $result = $this->db->update('table', $data);
    
    if($result)
    {
         //without error even no row updated
    } else {
    
    }
    
    3 và
    $result = $this->db->update('table', $data);
    
    if($result)
    {
         //without error even no row updated
    } else {
    
    }
    
    4).

  • Với công cụ sửa đổi

    $result = $this->db->update('table', $data);
    
    if($result)
    {
         //without error even no row updated
    } else {
    
    }
    
    5, câu lệnh Update không hủy bỏ ngay cả khi lỗi xảy ra trong quá trình cập nhật. Các hàng mà xung đột khóa trùng lặp xảy ra trên một giá trị khóa duy nhất không được cập nhật. Các hàng được cập nhật lên các giá trị sẽ gây ra lỗi chuyển đổi dữ liệu được cập nhật lên các giá trị hợp lệ gần nhất thay thế. Để biết thêm thông tin, hãy xem ảnh hưởng của việc bỏ qua đối với việc thực thi tuyên bố.

Các câu lệnh

$result = $this->db->update('table', $data);

if($result)
{
     //without error even no row updated
} else {

}
6, bao gồm cả những câu lệnh có mệnh đề
$data = array('city_name', 'Marthasville');

//update record 2 from Marthasville to the same thing, Marthasville. 
$this->db->where('id', 2);
$this->db->update('table', $data);

if($this->db->affected_rows() > 0)
{
    //I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
    return TRUE;
}else{
    return FALSE;
}
0, được gắn cờ là không an toàn cho sao chép dựa trên tuyên bố. (Điều này là do thứ tự mà các hàng được cập nhật xác định các hàng nào bị bỏ qua.) cách thức. .

Nếu bạn truy cập một cột từ bảng để được cập nhật trong một biểu thức,

TABLE
id    city_name
1     Union
2     Marthasville
1 sử dụng giá trị hiện tại của cột. Ví dụ: câu lệnh sau đặt
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET assignment_list
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

value:
    {expr | DEFAULT}

assignment:
    col_name = value

assignment_list:
    assignment [, assignment] ...
0 thành một so với giá trị hiện tại của nó:

UPDATE t1 SET col1 = col1 + 1;

Bài tập thứ hai trong câu lệnh sau đặt

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET assignment_list
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

value:
    {expr | DEFAULT}

assignment:
    col_name = value

assignment_list:
    assignment [, assignment] ...
1 cho giá trị hiện tại (cập nhật)
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET assignment_list
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

value:
    {expr | DEFAULT}

assignment:
    col_name = value

assignment_list:
    assignment [, assignment] ...
0, không phải là giá trị
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET assignment_list
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

value:
    {expr | DEFAULT}

assignment:
    col_name = value

assignment_list:
    assignment [, assignment] ...
0 gốc. Kết quả là
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET assignment_list
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

value:
    {expr | DEFAULT}

assignment:
    col_name = value

assignment_list:
    assignment [, assignment] ...
0 và
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET assignment_list
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

value:
    {expr | DEFAULT}

assignment:
    col_name = value

assignment_list:
    assignment [, assignment] ...
1 có cùng giá trị. Hành vi này khác với SQL tiêu chuẩn.

UPDATE t1 SET col1 = col1 + 1, col2 = col1;

Bài tập

TABLE
id    city_name
1     Union
2     Marthasville
1 bảng đơn thường được đánh giá từ trái sang phải. Đối với các bản cập nhật nhiều bảng, không có gì đảm bảo rằng các bài tập được thực hiện theo bất kỳ thứ tự cụ thể nào.

Nếu bạn đặt một cột thành giá trị hiện tại, MySQL sẽ thông báo điều này và không cập nhật nó.

Nếu bạn cập nhật một cột đã được khai báo

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET assignment_list
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

value:
    {expr | DEFAULT}

assignment:
    col_name = value

assignment_list:
    assignment [, assignment] ...
7 bằng cách đặt thành
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET assignment_list
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

value:
    {expr | DEFAULT}

assignment:
    col_name = value

assignment_list:
    assignment [, assignment] ...
8, xảy ra lỗi nếu chế độ SQL nghiêm ngặt được bật; Mặt khác, cột được đặt thành giá trị mặc định ngầm cho kiểu dữ liệu cột và số lượng cảnh báo được tăng lên. Giá trị mặc định ngầm là
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET assignment_list
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

value:
    {expr | DEFAULT}

assignment:
    col_name = value

assignment_list:
    assignment [, assignment] ...
9 cho các loại số, chuỗi trống (
UPDATE [LOW_PRIORITY] [IGNORE] table_references
    SET assignment_list
    [WHERE where_condition]
0) cho các loại chuỗi và giá trị Zero Zero đối với các loại ngày và thời gian. Xem Phần & NBSP; 11.6, Kiểu dữ liệu Giá trị mặc định.zero value for date and time types. See Section 11.6, “Data Type Default Values”.

Nếu một cột được tạo được cập nhật rõ ràng, giá trị được phép duy nhất là

TABLE
id    city_name
1     Union
2     Marthasville
7. Để biết thông tin về các cột được tạo, xem Phần & NBSP; 13.1.20.8, Bảng Tạo bảng và các cột được tạo.

TABLE
id    city_name
1     Union
2     Marthasville
1 Trả về số lượng hàng thực sự đã thay đổi. Hàm API
UPDATE [LOW_PRIORITY] [IGNORE] table_references
    SET assignment_list
    [WHERE where_condition]
3 C trả về số lượng hàng được khớp và cập nhật và số lượng cảnh báo xảy ra trong thời gian
TABLE
id    city_name
1     Union
2     Marthasville
1.

Bạn có thể sử dụng

UPDATE [LOW_PRIORITY] [IGNORE] table_references
    SET assignment_list
    [WHERE where_condition]
5 để hạn chế phạm vi của
TABLE
id    city_name
1     Union
2     Marthasville
1. Một điều khoản
$data = array('city_name', 'Marthasville');

//update record 2 from Marthasville to the same thing, Marthasville. 
$this->db->where('id', 2);
$this->db->update('table', $data);

if($this->db->affected_rows() > 0)
{
    //I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
    return TRUE;
}else{
    return FALSE;
}
1 là một hạn chế phù hợp với hàng. Tuyên bố dừng lại ngay khi nó tìm thấy
UPDATE [LOW_PRIORITY] [IGNORE] table_references
    SET assignment_list
    [WHERE where_condition]
8 các hàng thỏa mãn mệnh đề
TABLE
id    city_name
1     Union
2     Marthasville
8, cho dù chúng có thực sự được thay đổi hay không.

Nếu một câu lệnh

TABLE
id    city_name
1     Union
2     Marthasville
1 bao gồm một mệnh đề
$data = array('city_name', 'Marthasville');

//update record 2 from Marthasville to the same thing, Marthasville. 
$this->db->where('id', 2);
$this->db->update('table', $data);

if($this->db->affected_rows() > 0)
{
    //I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
    return TRUE;
}else{
    return FALSE;
}
0, các hàng được cập nhật theo thứ tự được chỉ định bởi mệnh đề. Điều này có thể hữu ích trong các tình huống nhất định có thể dẫn đến lỗi. Giả sử rằng bảng
UPDATE t1 SET col1 = col1 + 1;
2 chứa cột
UPDATE t1 SET col1 = col1 + 1;
3 có chỉ mục duy nhất. Câu lệnh sau đây có thể thất bại với lỗi khóa trùng lặp, tùy thuộc vào thứ tự các hàng được cập nhật:

UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT() > 0 THEN 1 ELSE 0 END AS updated;
0

Ví dụ: nếu bảng chứa 1 và 2 trong cột

UPDATE t1 SET col1 = col1 + 1;
3 và 1 được cập nhật lên 2 trước khi 2 được cập nhật lên 3, xảy ra lỗi. Để tránh vấn đề này, hãy thêm một mệnh đề
$data = array('city_name', 'Marthasville');

//update record 2 from Marthasville to the same thing, Marthasville. 
$this->db->where('id', 2);
$this->db->update('table', $data);

if($this->db->affected_rows() > 0)
{
    //I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
    return TRUE;
}else{
    return FALSE;
}
0 để gây ra các hàng có giá trị
UPDATE t1 SET col1 = col1 + 1;
3 lớn hơn được cập nhật trước những giá trị có giá trị nhỏ hơn:

UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT() > 0 THEN 1 ELSE 0 END AS updated;
1

Bạn cũng có thể thực hiện các hoạt động

TABLE
id    city_name
1     Union
2     Marthasville
1 bao gồm nhiều bảng. Tuy nhiên, bạn không thể sử dụng
$data = array('city_name', 'Marthasville');

//update record 2 from Marthasville to the same thing, Marthasville. 
$this->db->where('id', 2);
$this->db->update('table', $data);

if($this->db->affected_rows() > 0)
{
    //I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
    return TRUE;
}else{
    return FALSE;
}
0 hoặc
$data = array('city_name', 'Marthasville');

//update record 2 from Marthasville to the same thing, Marthasville. 
$this->db->where('id', 2);
$this->db->update('table', $data);

if($this->db->affected_rows() > 0)
{
    //I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
    return TRUE;
}else{
    return FALSE;
}
1 với
TABLE
id    city_name
1     Union
2     Marthasville
1 nhiều bảng. Điều khoản
$data = array('city_name', 'Marthasville');

//update record 2 from Marthasville to the same thing, Marthasville. 
$this->db->where('id', 2);
$this->db->update('table', $data);

if($this->db->affected_rows() > 0)
{
    //I need it to return TRUE when the MySQL was successful even if nothing was actually updated.
    return TRUE;
}else{
    return FALSE;
}
3 liệt kê các bảng liên quan đến tham gia. Cú pháp của nó được mô tả trong Phần & NBSP; 13.2.11.2, Điều khoản tham gia. Đây là một ví dụ:

UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT() > 0 THEN 1 ELSE 0 END AS updated;
2

Ví dụ trước cho thấy một lần nối bên trong sử dụng toán tử dấu phẩy, nhưng các câu lệnh

TABLE
id    city_name
1     Union
2     Marthasville
1 nhiều bảng có thể sử dụng bất kỳ loại tham gia nào được phép trong các câu lệnh
if($this->db->affected_rows() >= 0){ }
8, chẳng hạn như
UPDATE t1 SET col1 = col1 + 1, col2 = col1;
4.

Nếu bạn sử dụng câu lệnh

TABLE
id    city_name
1     Union
2     Marthasville
1 nhiều bảng liên quan đến các bảng
UPDATE t1 SET col1 = col1 + 1, col2 = col1;
6 có các ràng buộc chính của nước ngoài, trình tối ưu hóa MySQL có thể xử lý các bảng theo thứ tự khác với mối quan hệ cha mẹ/trẻ em của họ. Trong trường hợp này, tuyên bố thất bại và quay trở lại. Thay vào đó, hãy cập nhật một bảng duy nhất và dựa vào các khả năng
UPDATE t1 SET col1 = col1 + 1, col2 = col1;
7 mà
UPDATE t1 SET col1 = col1 + 1, col2 = col1;
6 cung cấp để khiến các bảng khác được sửa đổi phù hợp. Xem Phần & NBSP; 13.1.20.5, các ràng buộc khóa nước ngoài.

Bạn không thể cập nhật một bảng và chọn trực tiếp từ cùng một bảng trong một truy vấn con. Bạn có thể làm việc xung quanh điều này bằng cách sử dụng bản cập nhật nhiều bàn trong đó một trong các bảng có nguồn gốc từ bảng mà bạn thực sự muốn cập nhật và đề cập đến bảng dẫn xuất bằng bí danh. Giả sử bạn muốn cập nhật một bảng có tên

UPDATE t1 SET col1 = col1 + 1, col2 = col1;
9 được xác định bằng cách sử dụng câu lệnh được hiển thị ở đây:

UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT() > 0 THEN 1 ELSE 0 END AS updated;
3

Để giảm giá bán lẻ của bất kỳ mặt hàng nào mà đánh dấu là 30% hoặc lớn hơn và trong số đó bạn có ít hơn một trăm trong kho, bạn có thể cố gắng sử dụng một câu lệnh

TABLE
id    city_name
1     Union
2     Marthasville
1 như cái sau, sử dụng một truy vấn con trong
TABLE
id    city_name
1     Union
2     Marthasville
8 mệnh đề. Như được hiển thị ở đây, tuyên bố này không hoạt động:

UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT() > 0 THEN 1 ELSE 0 END AS updated;
4

Thay vào đó, bạn có thể sử dụng bản cập nhật nhiều bảng trong đó trình điều khiển con được chuyển vào danh sách các bảng sẽ được cập nhật, sử dụng bí danh để tham khảo nó trong mệnh đề

TABLE
id    city_name
1     Union
2     Marthasville
8 ngoài cùng, như thế này:

UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT() > 0 THEN 1 ELSE 0 END AS updated;
5

Bởi vì trình tối ưu hóa cố gắng hợp nhất bảng dẫn xuất

UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT() > 0 THEN 1 ELSE 0 END AS updated;
03 vào khối truy vấn ngoài cùng, điều này chỉ hoạt động nếu bạn buộc vật chất hóa bảng dẫn xuất. Bạn có thể thực hiện điều này bằng cách đặt cờ
UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT() > 0 THEN 1 ELSE 0 END AS updated;
04 của biến hệ thống ____105 thành
UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT() > 0 THEN 1 ELSE 0 END AS updated;
06 trước khi chạy bản cập nhật hoặc bằng cách sử dụng gợi ý của trình tối ưu hóa
UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT() > 0 THEN 1 ELSE 0 END AS updated;
07, như được hiển thị ở đây:

UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT() > 0 THEN 1 ELSE 0 END AS updated;
6

Ưu điểm của việc sử dụng gợi ý của trình tối ưu hóa trong trường hợp như vậy là nó chỉ áp dụng trong khối truy vấn nơi nó được sử dụng, do đó không cần thiết phải thay đổi giá trị của

UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT() > 0 THEN 1 ELSE 0 END AS updated;
05 một lần nữa sau khi thực hiện
TABLE
id    city_name
1     Union
2     Marthasville
1.

Một khả năng khác là viết lại trình điều khiển con để nó không sử dụng

UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT() > 0 THEN 1 ELSE 0 END AS updated;
10 hoặc
UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT() > 0 THEN 1 ELSE 0 END AS updated;
11, như thế này:

UPDATE table SET table.name = "Anthony" WHERE table.id = 3;
SELECT CASE WHEN ROW_COUNT() > 0 THEN 1 ELSE 0 END AS updated;
7

Trong trường hợp này, truy vấn con được thực hiện theo mặc định thay vì được hợp nhất, do đó không cần thiết phải vô hiệu hóa việc hợp nhất bảng dẫn xuất.

Làm thế nào kiểm tra truy vấn cập nhật MySQL đã thành công trong PHP?

Sử dụng nếu (mysqli_affected_rows ($ mysqli)> 0) hoặc không có so sánh nào cả. Sidenote: == 1 chỉ so sánh với 1, trái ngược với> 0 mà bạn có thể đang cố gắng cập nhật nhiều hơn một hàng. Tuy nhiên và trong dịp hiếm hoi,> 0 được yêu cầu khi điều này cũng đã xảy ra với tôi trước đây; Đó là lý do câu trả lời của tôi. or no comparison at all. Sidenote: ==1 is only comparing for 1, as opposed to >0 which you may be trying to update more than one row. However and on the rare occasion, >0 is required where this has also happened to me before; that is the reason of my answer.

Truy vấn cập nhật trả về MySQL là gì?

Truy vấn cập nhật MySQL được sử dụng để cập nhật các bản ghi hiện có trong một bảng trong cơ sở dữ liệu MySQL. Nó có thể được sử dụng để cập nhật một hoặc nhiều trường cùng một lúc. Nó có thể được sử dụng để chỉ định bất kỳ điều kiện nào bằng cách sử dụng mệnh đề WHERE.update existing records in a table in a MySQL database. It can be used to update one or more field at the same time. It can be used to specify any condition using the WHERE clause.

Làm thế nào tôi có thể nhận được dữ liệu gần đây trong MySQL?

Để có được bản ghi cuối cùng, sau đây là truy vấn.mysql> Chọn *từ GetLastRecord Order by ID Desc Giới hạn 1;Sau đây là đầu ra.Đầu ra trên cho thấy chúng tôi đã tìm được bản ghi cuối cùng, với ID 4 và tên Carol.mysql> select *from getLastRecord ORDER BY id DESC LIMIT 1; The following is the output. The above output shows that we have fetched the last record, with Id 4 and Name Carol.

Làm thế nào tôi có thể đếm số lượng hàng bị ảnh hưởng trong MySQL?

mysql_affed_rows () có thể được gọi ngay sau khi thực hiện câu lệnh với mysql_real_query () hoặc mysql_query ().Nó trả về số lượng hàng đã thay đổi, xóa hoặc chèn bởi câu lệnh cuối cùng nếu đó là bản cập nhật, xóa hoặc chèn.Đối với các câu lệnh chọn, mysql_affed_rows () hoạt động như mysql_num_rows (). may be called immediately after executing a statement with mysql_real_query() or mysql_query() . It returns the number of rows changed, deleted, or inserted by the last statement if it was an UPDATE , DELETE , or INSERT . For SELECT statements, mysql_affected_rows() works like mysql_num_rows() .