2015-05-25 8 views
6

Ho il seguente codice PHP che è per un sistema di votazione di un'app. È un'applicazione Q & e l'utente può votare per domande e risposte pubblicate.Come vedere se il risultato della query SQL è vuoto prima di eseguire altre query in PHP

Nel mio codice php, per prima cosa controlla se l'utente ha votato per una domanda specifica. Questo sarebbe presente nella tabella QVOTES, con l'e-mail e l'id della domanda per cui è stata votata.

Quando si esegue questo controllo, non sono sicuro di come vedere se $ result è un set vuoto, in modo da inviare il voto dell'utente se non hanno ancora votato per la domanda.

Come posso farlo funzionare? Tutto l'aiuto è molto apprezzato.

<?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

Penso che la tua condizione sia sbagliata. hai detto che se l'utente non vota per la domanda, inserisce solo il record. ma attraverso le tue condizioni sembra che stia succedendo esattamente il contrario? Non è vero? –

+0

Inoltre, come stai verificando che un utente abbia votato per una domanda oppure no? perché non ho visto user_id in nessuna parte dell'immagine. grazie –

+0

@anantkumarsingh l'id utente è in realtà l'email dell'utente. –

risposta

1

In realtà si sta facendo in modo sbagliato. Si prega di cercare di fare in questo modo: -

<?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); 

Nota: - a cambiare il messaggio per una migliore comprensione. Puoi cambiare in base ai tuoi desideri. Grazie.

1

Come vedere se $ risultato è un insieme vuoto?

Dalla documentazione:

Restituisce FALSE in caso di fallimento. Per il successo delle query SELECT, SHOW, DESCRIBE o EXPLAIN mysqli_query() restituirà un oggetto mysqli_result. Per altre query con esito positivo mysqli_query() restituirà TRUE (Ref)

Usa $result->num_rows se $result non è FALSE;

Problemi correlati