2015-05-25 20 views
6

Tôi có mã PHP sau đây dành cho hệ thống bỏ phiếu của ứng dụng. Ứng dụng Q & Một ứng dụng và người dùng có thể bỏ phiếu cho các câu hỏi và câu trả lời được đăng.Cách xem kết quả truy vấn SQL có trống không trước khi thực hiện các truy vấn khác trong PHP

Trong mã php của tôi, trước tiên tôi kiểm tra xem người dùng đã bỏ phiếu cho một câu hỏi cụ thể chưa. Điều này sẽ tồn tại trong bảng QVOTES, với email và id của câu hỏi được bình chọn.

Khi thực hiện kiểm tra này, tôi không chắc chắn làm thế nào để xem liệu kết quả $ là một bộ trống, để gửi phiếu bầu của người dùng nếu họ chưa bỏ phiếu cho câu hỏi.

Tôi có thể làm việc này bằng cách nào? Tất cả sự giúp đỡ được đánh giá cao.

<?php 

$con=mysqli_connect("127.2.1.1","S837","887","D887"); 
if (mysqli_connect_errno($con)) 
{ 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
$qid = $_POST['qid']; 
$email = $_POST['email']; 
$result = mysqli_query($con, "SELECT * FROM QVOTES WHERE QID = $qid AND EMAIL = '$email'"); 
if (!mysqli_num_rows($result)){ 
    if ($result = mysqli_query($con, "INSERT INTO QVOTES (QID, EMAIL) VALUES  ($qid, '$email')")) { 
      mysqli_query($con, "Update QUESTIONS SET VOTES = VOTES +1 WHERE  QID = $qid"); 
      echo "Update successful"; 
     } else{ 
      echo "Update unsuccessful"; 
     } 
      } else{ 
     echo "null";   
    } 
    mysqli_close($con); 
+0

Tôi nghĩ tình trạng của bạn là sai. bạn nói nếu người dùng không bỏ phiếu cho câu hỏi thì chỉ chèn bản ghi. nhưng qua tình trạng của bạn, có vẻ như điều ngược lại xảy ra? Phải không? –

+0

Ngoài ra cách bạn kiểm tra xem người dùng đã bỏ phiếu cho một câu hỏi hay chưa? bởi vì tôi không thấy user_id ở bất kỳ đâu trong ảnh. cảm ơn –

+0

@anantkumarsingh id người dùng thực sự là email của người dùng. –

Trả lời

1

Thực ra bạn đang làm sai hướng. Hãy cố gắng làm như thế này: -

<?php 

$con=mysqli_connect("127.2.1.1","S837","887","D887"); 
if (mysqli_connect_errno($con)) 
{ 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
$qid = $_POST['qid']; 
$email = $_POST['email']; 
$result = mysqli_query($con, "SELECT * FROM QVOTES WHERE QID = $qid AND EMAIL = $email") or die(mysqli_error($con)); // no need of extra quote 
if ($result->num_rows == 0){ // means no vote-up done till now 
    $result = mysqli_query($con, "INSERT INTO QVOTES (QID, EMAIL) VALUES ($qid, $email)")or die(mysqli_error($con)); // insert 
    if($result){ 
     echo "Vote Added successfully."; 
    } else{ 
     echo "Error occur while adding vote.Please try again."; 
    } 
} else{ 
    $result = mysqli_query($con, "Update QUESTIONS SET VOTES = VOTES +1 WHERE QID = $qid AND EMAIL = $email")or die(mysqli_error($con)); // upddate 
     if($result){ 
     echo "Vote updated successfully."; 
    } else{ 
     echo "Error occur while updating vote.Please try again."; 
    } 
} 
    mysqli_close($con); 

Lưu ý: - Tôi thay đổi thông điệp cho sự hiểu biết tốt hơn. Bạn có thể thay đổi theo mong muốn của bạn. cảm ơn.

1

Cách xem kết quả $ có phải là bộ trống không?

Từ các tài liệu:

Returns FALSE trên thất bại. Đối với các truy vấn SELECT, SHOW, DESCRIBE hoặc EXPLAIN thành công mysqli_query() sẽ trả về một đối tượng mysqli_result. Đối với các truy vấn thành công khác mysqli_query() sẽ trả về TRUE (Ref)

Sử dụng $result->num_rows nếu $result không phải là FALSE;

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