2015-05-25 5 views
6

Ich habe den folgenden PHP-Code, der für ein Abstimmungssystem einer App ist. Es ist eine Q & Eine App, und der Benutzer kann für Fragen und Antworten abstimmen, die gepostet werden.Wie zu sehen, ob das Ergebnis der SQL-Abfrage leer ist, bevor andere Abfragen in PHP

In meinem PHP-Code, zuerst überprüfe ich, ob der Benutzer für eine bestimmte Frage gewählt hat. Dies würde in der QVOTES-Tabelle existieren, mit der E-Mail und der ID der Frage, für die gestimmt wird.

Bei dieser Überprüfung bin ich mir nicht sicher, wie man sehen kann, ob $ result ein leerer Satz ist, um die Stimme des Benutzers abzugeben, wenn sie noch nicht für die Frage gestimmt haben.

Wie kann ich das funktionieren? Alle Hilfe wird sehr geschätzt.

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

Ich denke, Ihr Zustand ist falsch. Sie sagten, wenn der Benutzer nicht für die Frage abstimmt, dann fügen Sie nur den Datensatz ein. aber durch deinen Zustand scheint es genau umgekehrt zu sein? Ist es nicht? –

+0

Auch, wie Sie überprüfen, ob ein Benutzer für eine Frage gewählt hat oder nicht? weil ich user_id nirgendwo im Bild gesehen habe. danke –

+0

@anantkumarsingh die Benutzer-ID ist eigentlich die E-Mail des Benutzers. –

Antwort

1

Eigentlich machst du es falsch. Bitte versuchen Sie es wie dies zu tun: -

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

Hinweis: - Ich Nachricht zum besseren Verständnis ändern. Sie können nach Ihrem Wunsch ändern. Vielen Dank.

1

Wie zu sehen, ob ein leerer Satz $ result ist?

Aus der Dokumentation:

false Gibt bei einem Fehler. Für erfolgreiche SELECT-, SHOW-, DESCRIBE- oder EXPLAIN-Abfragen gibt mysqli_query() ein mysqli_result-Objekt zurück. Für andere erfolgreiche Abfragen mysqli_query() gibt TRUE (Ref)

Verwenden $result->num_rows wenn $result nicht FALSE;

Verwandte Themen