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? Show
hỏi ngày 14 tháng 1 lúc 16:30Jan 14 at 16:30
3 Tôi nghi ngờ bạn muốn chức năng 8
Đã trả lời ngày 14 tháng 1 lúc 17:25Jan 14 at 17:25
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:
Nếu tôi chạy như sau:
Điều này sẽ trả về 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ề 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.
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ã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:
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:
Đã 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:
Đơn giản như thế này:
Đã 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
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 1 có thể bắt đầu với mệnh đề 3 để xác định các biểu thức bảng phổ biến có thể truy cập trong 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:
Cú pháp nhiều bàn:
Đối với cú pháp bảng đơn, câu lệnh 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 đề 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 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 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 đề 8, tất cả các hàng được cập nhật. Nếu mệnh đề 0 được chỉ định, các hàng được cập nhật theo thứ tự được chỉ định. Điều khoản 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, 1 cập nhật các hàng trong mỗi bảng có tên trong 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 0 và 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 đề 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 7 hay không.Ghi chú Không giống như trường hợp khi sử dụng 6 với câu lệnh 9 hoặc 0, một câu lệnh 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 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.
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.
3 và 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 1 cho các cột được tham chiếu trong một 1 thực sự được cập nhật. Bạn chỉ cần đặc quyền 8 cho bất kỳ cột nào được đọc nhưng không được sửa đổi.Câu lệnh 1 hỗ trợ các công cụ sửa đổi sau:
Các câu lệnh 6, bao gồm cả những câu lệnh có mệnh đề 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, 1 sử dụng giá trị hiện tại của cột. Ví dụ: câu lệnh sau đặt 0 thành một so với giá trị hiện tại của nó:
Bài tập thứ hai trong câu lệnh sau đặt 1 cho giá trị hiện tại (cập nhật) 0, không phải là giá trị 0 gốc. Kết quả là 0 và 1 có cùng giá trị. Hành vi này khác với SQL tiêu chuẩn.
Bài tập 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 7 bằng cách đặt thành 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à 9 cho các loại số, chuỗi trống ( 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à 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.
1 Trả về số lượng hàng thực sự đã thay đổi. Hàm API 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 1.Bạn có thể sử dụng 5 để hạn chế phạm vi của 1. Một điều khoản 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 8 các hàng thỏa mãn mệnh đề 8, cho dù chúng có thực sự được thay đổi hay không.Nếu một câu lệnh 1 bao gồm một mệnh đề 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 2 chứa cột 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: 0Ví dụ: nếu bảng chứa 1 và 2 trong cột 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 đề 0 để gây ra các hàng có giá trị 3 lớn hơn được cập nhật trước những giá trị có giá trị nhỏ hơn: 1Bạn cũng có thể thực hiện các hoạt động 1 bao gồm nhiều bảng. Tuy nhiên, bạn không thể sử dụng 0 hoặc 1 với 1 nhiều bảng. Điều khoản 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ụ: 2Ví 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 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 8, chẳng hạn như 4.Nếu bạn sử dụng câu lệnh 1 nhiều bảng liên quan đến các bảng 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 7 mà 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 9 được xác định bằng cách sử dụng câu lệnh được hiển thị ở đây: 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 1 như cái sau, sử dụng một truy vấn con trong 8 mệnh đề. Như được hiển thị ở đây, tuyên bố này không hoạt động: 4Thay 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 đề 8 ngoài cùng, như thế này: 5Bởi vì trình tối ưu hóa cố gắng hợp nhất bảng dẫn xuất 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ờ 04 của biến hệ thống ____105 thành 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 07, như được hiển thị ở đây: 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 05 một lần nữa sau khi thực hiện 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 10 hoặc 11, như thế này: 7Trong 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() . |