a

Câu hỏi Chèn dữ liệu vào MySql DB và hiển thị nếu chèn là thành công hay thất bại


Tôi đang chèn dữ liệu vào một DB MySQL, Trong trường hợp nếu chèn không thành công tôi cần phải đưa ra một thông báo lỗi thích hợp cho biết như vậy. Theo mã của tôi dưới đây tôi sẽ Echo-ing thông điệp Inserted nếu chèn là thành công hay thất bại.

Điều tôi muốn làm là lặp lại Inserted tin nhắn chỉ khi chèn dữ liệu thành công và trả về fail nếu nó không thành công. Làm thế nào tôi có thể sửa đổi mã của tôi để làm như vậy?

<?php

mysql_connect("localhost", "root", "123") or die(mysql_error());
mysql_select_db("swm_database") or die(mysql_error());

mysql_query("INSERT INTO PEOPLE (NAME ) VALUES ('COLE')")or die(mysql_error()); 

echo "Inserted";
?>

7
2017-07-25 12:52


gốc


các câu trả lời dưới đây đã cho biết bạn nên làm gì, nhưng hãy nghĩ về việc sử dụng mysqli hoặc PDO thay vì các hàm mysql_ *. - Jon Taylor


Các câu trả lời:


$result = mysql_query("INSERT INTO PEOPLE (NAME ) VALUES ('COLE')"));
if($result)
{
echo "Success";

}
else
{
echo "Error";

}

27
2017-07-25 12:54





Sau INSERT truy vấn bạn có thể sử dụng ROW_COUNT() để kiểm tra hoạt động chèn thành công là:

SELECT IF(ROW_COUNT() = 1,  "Insert Success", "Insert Failed") As status;

3
2017-07-25 12:55



Trả về true không đảm bảo dữ liệu đã được chèn vào cơ sở dữ liệu, tôi có thể nói như vậy không? - Timeless
vâng, đây là cách an toàn nhất vì trả lại đúng sẽ không hoạt động trong trường hợp INSERT IGNORE truy vấn. - Omesh


Theo sách PHP và MySQL cho các trang web động (ấn bản thứ 4)

Thí dụ:

$r = mysqli_query($dbc, $q);

Đối với các truy vấn đơn giản như CHÈN, CẬP NHẬT, XÓA BỎ, v.v. (không trả lại hồ sơ), $r biến - viết tắt của kết quả — sẽ là THẬT hoặc là SAI, tùy thuộc vào việc truy vấn được thực thi thành công hay không.

Hãy nhớ rằng "thực hiện thành công" có nghĩa là nó chạy mà không có lỗi; nó không có nghĩa là thực thi của truy vấn nhất thiết có kết quả mong muốn; bạn sẽ cần phải thử nghiệm cho điều đó.

Sau đó làm thế nào để kiểm tra?

Trong khi mysqli_num_rows() hàm sẽ trả về số hàng được tạo bởi LỰA CHỌN truy vấn, mysqli_affected_rows() trả về số hàng bị ảnh hưởng bởi CHÈN, CẬP NHẬT, hoặc là XÓA BỎ truy vấn. Nó được sử dụng như vậy:

$num = mysqli_affected_rows($dbc);

không giống mysqli_num_rows(), một đối số mà hàm nhận được là kết nối cơ sở dữ liệu ($ dbc), không phải kết quả của truy vấn trước đó ($ r).


3
2018-01-21 08:33





Kiểm tra: http://php.net/manual/en/function.mysql-affected-rows.php


2
2017-07-25 12:57



Hữu ích, nhưng vui lòng không thêm liên kết chỉ trả lời. - Chris Happy


if (mysql_query("INSERT INTO PEOPLE (NAME ) VALUES ('COLE')")or die(mysql_error())) {
  echo 'Success';
} else {
  echo 'Fail';
} 

Mặc dù bạn có or die(mysql_error()) nó sẽ hiển thị mysql_error () trên màn hình khi nó không thành công. Bạn có lẽ nên loại bỏ nếu nó không phải là kết quả mong muốn


1
2017-07-25 12:55