Làm cách nào để biết truy vấn php có thành công không?

Than ôi, nó hoàn toàn sai. Kết quả của truy vấn không liên quan gì đến số lượng hàng được tìm thấy. Một kết quả trống vẫn là một kết quả hợp lệ, nó không thể là false chỉ vì truy vấn không tìm thấy gì

Trên thực tế, mã để kiểm tra xem một số giá trị có tồn tại trong cơ sở dữ liệu hay không sẽ chỉ là một quy trình thông thường cho các truy vấn được chọn

Và tất nhiên, một tuyên bố chuẩn bị là bắt buộc. KHÔNG bao giờ đặt một biến dữ liệu trực tiếp vào truy vấn. Thay vào đó, hãy luôn sử dụng trình giữ chỗ

Làm cách nào để kiểm tra xem một giá trị có tồn tại không?

Để kiểm tra xem một giá trị cụ thể có tồn tại trong cơ sở dữ liệu hay không, bạn chỉ cần chạy một truy vấn CHỌN thông thường, tìm nạp một hàng và xem có thứ gì đã được tìm nạp hay không

Cho trước $pdo chứa một phiên bản PDO hợp lệ, mã sẽ là

$email = "test@example.com";
$stmt = $pdo->prepare["SELECT * FROM users WHERE email=?"];
$stmt->execute[[$email]];
$user = $stmt->fetch[];
if [$user] {
    // email found
} else {
    // or not

Ở đây chúng tôi đang chọn một hàng phù hợp với tiêu chí của chúng tôi, sau đó tìm nạp nó và sau đó kiểm tra xem có thứ gì đã được chọn hay chưa

ghi chú

Cũng hợp lý khi chỉ chọn một giá trị hằng số duy nhất để giảm một chút chi phí, nếu chúng ta sẽ không sử dụng bất kỳ dữ liệu đã chọn nào. Vì mục đích đó, đơn giản thay thế * bằng 1. Có một hàm hoặc một phương thức của lớp cho mục đích này cũng sẽ hữu ích

function emailExists[$pdo, $email] {
    $stmt = $pdo->prepare["SELECT 1 FROM users WHERE email=?"];
    $stmt->execute[[$email]];
    return $stmt->fetchColumn[];
]

if [emailExists[$pdo, $email]] {
    // found
}

ở đây chúng tôi đang sử dụng một phương thức tiện dụng của PDO là fetchColumn trả về một giá trị đã chọn hoặc nếu không thì là false. Cho trước 1 sẽ được coi là

$email = "test@example.com";
$stmt = $pdo->prepare["SELECT * FROM users WHERE email=?"];
$stmt->execute[[$email]];
$user = $stmt->fetch[];
if [$user] {
    // email found
} else {
    // or not
0 bởi câu lệnh
$email = "test@example.com";
$stmt = $pdo->prepare["SELECT * FROM users WHERE email=?"];
$stmt->execute[[$email]];
$user = $stmt->fetch[];
if [$user] {
    // email found
} else {
    // or not
1, chúng ta có thể trả về trực tiếp kết quả của phương thức này. Tuy nhiên, trong trường hợp bạn thích nhập nghiêm ngặt, giá trị trả về có thể được chuyển thành boolean

    return [bool]$stmt->fetchColumn[];

Ngoài ra, như có thể thấy ở trên, một giải pháp phổ biến với số lượng hàng được trả về là không cần thiết. Gọi $stmt->numRows[] chỉ là thừa, chưa kể nó có thể không khả dụng do một số trình điều khiển hoặc cài đặt

❮ Tham chiếu PHP MySQLi

Ví dụ - Kiểu hướng đối tượng

Thực hiện truy vấn đối với cơ sở dữ liệu

$mysqli = new mysqli["localhost","my_user","my_password","my_db"];

// Kiểm tra kết nối
if [$mysqli -> connect_errno] {
  echo "Không thể kết nối với MySQL. ". $mysqli -> connect_error;
  thoát[];
}

// Thực hiện truy vấn
if [$result = $mysqli -> query["SELECT * FROM Persons"]] {
  echo "Returned . ". $result -> num_rows;
  // ​​Bộ kết quả miễn phí
  $result -> free_result[];
}

$mysqli -> close[];
?>


Nhìn vào ví dụ về phong cách thủ tục ở phía dưới

Định nghĩa và cách sử dụng

Hàm query[] / mysqli_query[] thực hiện truy vấn đối với cơ sở dữ liệu

cú pháp

Phong cách hướng đối tượng

$mysqli -> truy vấn [truy vấn, chế độ kết quả]

phong cách thủ tục

mysqli_query[kết nối, truy vấn, chế độ kết quả]

Giá trị tham số

Tham sốMô tảkết nốiBắt buộc. Chỉ định kết nối MySQL với usequeryRequired. Chỉ định chuỗi kết quả truy vấn SQL

Không bắt buộc. Một hằng số. Có thể là một trong những điều sau đây

  • MYSQLI_USE_RESULT [Sử dụng cái này để truy xuất lượng lớn dữ liệu]
  • MYSQLI_STORE_RESULT [Đây là mặc định]

chi tiết kỹ thuật

Giá trị trả về. Đối với các truy vấn CHỌN, HIỂN THỊ, MÔ TẢ hoặc GIẢI THÍCH thành công, nó sẽ trả về một đối tượng mysqli_result. Đối với các truy vấn thành công khác, nó sẽ trả về TRUE. FALSE trên failPhiên bản PHP. Nhật ký thay đổi 5+PHP. PHP5. 3. 0 đã thêm khả năng truy vấn không đồng bộ

Ví dụ - Kiểu thủ tục

Thực hiện truy vấn đối với cơ sở dữ liệu

$con = mysqli_connect["localhost","my_user","my_password","my_db"];

if [mysqli_connect_errno[]] {
  echo "Không thể kết nối với MySQL. ". mysqli_connect_error[];
  thoát[];
}

// Thực hiện truy vấn
if [$result = mysqli_query[$con, "SELECT * FROM Persons"]] {
  echo "Returned rows . ". mysqli_num_rows[$result];
  // ​​Tập kết quả miễn phí
  mysqli_free_result[$result];
}

mysqli_close[$con];
?>


❮ Tham chiếu PHP MySQLi

Làm cách nào để kiểm tra truy vấn PDO thành công trong PHP?

Làm cách nào để kiểm tra truy vấn PDO thành công trong PHP? . exec không thành công [trả về FALSE hoặc 0], sử dụng toán tử === để kiểm tra nghiêm ngặt giá trị được trả về với FALSE .

Làm cách nào chúng tôi có thể kiểm tra thao tác chèn thành công trong SQL PHP?

Để kiểm tra xem INSERT của bạn có thành công hay không, bạn có thể sử dụng mysqli_affected_rows[] . Trả về số hàng bị ảnh hưởng bởi truy vấn INSERT, UPDATE, REPLACE hoặc DELETE cuối cùng. Và kiểm tra lỗi đối với truy vấn của bạn và cho PHP.

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

Sử dụng if[mysqli_affected_rows[$mysqli] >0 ] hoặc không so sánh gì cả. phụ lục. ==1 chỉ so sánh với 1, trái ngược với >0 mà bạn có thể đang cố cập nhật nhiều hàng. Tuy nhiên và trong một số trường hợp hiếm hoi, >0 là bắt buộc khi điều này cũng đã xảy ra với tôi trước đây; .

Làm cách nào tôi có thể gặp lỗi trong truy vấn PHP?

Để nhận được thông báo lỗi, chúng ta phải sử dụng một hàm khác mysqli_error[] để in thông báo lỗi do cơ sở dữ liệu MySQL trả về sau khi thực hiện truy vấn . Đây là cách in thông báo lỗi. tiếng vang mysqli_error[]; .

Chủ Đề