2017-01-26 4 views
-1

Ich versuche zu überprüfen, ob drei Elemente bereits in einer Datenbank vorhanden sind. Die Elemente sind Raum, Timer und Daten. Ich möchte überprüfen, ob das, was ich eintrage, bereits in der Datenbank vorhanden ist. Der folgende Code vergleicht, was ich gerade mit dem, was bereits vorhanden ist, und wenn es das gleiche ist, sagt es mir, andere Daten einzugeben, aber wenn es nicht ist, gibt es meine Daten ein. Das einzige Problem ist, dass es sie einzeln statt kollektiv prüft und dann meine Daten viele Male eingibt, bis sie bemerkt, dass meine Daten tatsächlich vorhanden waren und nicht eingegeben worden sein sollten.PHP check was in der Datenbank ist

Ist es möglich, meinen Eintrag mit den bereits vorhandenen Daten und dann zu vergleichen, sobald alle Daten eingegeben wurden entscheiden, ob meine Daten, anstatt sie das Hinzufügen jedes Mal hinzugefügt werden kann, wenn zu bekommt. Hoffentlich kommt diese Frage klar und danke im Voraus !!

$sql = "SELECT id, room, timers, dates FROM groom"; 
$result = $conn -> query ($sql); 
if ($result -> num_rows >0){ 
    while($row = $result -> fetch_assoc()){ 
     if($room == $row["room"] AND $timers == $row["timers"] AND $dates == $row["dates"]){ 
      echo "This booking is not available"; 
     }else{ 
      //book 
      //here it books every time even though it has not checked all the data above in the if statement 
     } 
+4

Sie eine 'WHERE' Klausel –

+0

Denken Sie verwenden müssen Darüber hinaus befinden Sie sich in einer While - Schleife, die jede Zeile dieser Tabelle verarbeitet. Daher stimmen einige Zeilen nicht mit Ihrem IF - Test überein, und Sie werden natürlich den ELSE - Pfad verwenden. – RiggsFolly

Antwort

0

Statt jede Zeile in der Tabelle zu verarbeiten und dann die Suche nach einem Spiel in einem PHP-IF, erhält MYSQL für Sie die schwere Arbeit zu tun.

Sie wissen, was Sie in der Tabelle finden wollen, so dass es zu einer WHERE-Klausel hinzufügen

$sql = "SELECT id FROM groom WHERE room=? AND timers=? AND dates = ?"; 

$stmt = $conn->prepare($sql); 

// you might need to check the data types `sss` are correct for your schema 
$stmt->bind_param('sss', $room, $timers, $dates); 

$stmt->execute(); 

if ($stmt->num_rows > 0){ 
    // we found a row so that stuff already exists 
    // you can use the id if you need it 
}else{ 
    //book 
    // Do whatever you were doing here to save this data 
} 
0

Sie dieses

versuchen
$sql = "SELECT id, room, timers, dates FROM groom where room = '$room' and timers ='$timers' and dates='$dates'"; 
    $result = $conn -> query ($sql); 
    if ($result -> num_rows >0){ 
     echo "This booking is not available"; 
    }else{ 
     //your alternative code here ! 
    } 
+0

Ihr Skript läuft Gefahr [SQL Injection Attack] (http : //stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-p hp) Schauen Sie sich an, was mit [Little Bobby Tables] passiert ist (http://bobby-tables.com/) Sogar [Wenn Sie Eingaben entgehen, ist es nicht sicher!] (http://stackoverflow.com/ questions/5741187/sql-injection-das-kommt-um-mysql-real-escape-string) Verwenden Sie [vorbereitete parametrisierte Anweisungen] (http://php.net/manual/en/mysqli.quickstart.prepared-statements. php) – RiggsFolly