2016-04-19 18 views
0

Ich arbeite an einer Seite, auf der Nutzer ihre Wetteinsätze posten. In MySQL habe ich die Tischwetten (ID, Event, Pick, Quoten, Einsatz, Analyse, Status, Gewinn).Überprüfen, ob die MySQL-Spalte leer ist

Ich möchte überprüfen, ob 'Status' in MySQL leer ist, aber die if() Anweisung funktioniert nicht. Wenn es leer ist, sollte es alle Wetten von einem Benutzer ausgeben. Der angegebene Code befindet sich in einer for-Schleife.

Was ist also falsch mit der if() Aussage? Und gibt es einen besseren Weg, dies zu tun?

$result = queryMysql("SELECT * FROM bets WHERE user='$user'"); 
$row = mysqli_fetch_array($result); 

if ('' !== $row['status']) { 
    echo "Status: " . $status . "</div>" . 
    "Published by: " . $user . "<br>" . 
    "PICK: " . $pick . "<br>" . 
    "Odds: " . $odds . "<br>" . 
    "Stake: " . $stake . "<br>" . 
    nl2br($analysis) ; 
} 
+1

Verwendung mysql_num_rows() – RJParikh

+0

Sie 'verwenden können, verwenden können, wenn (! Empty ($ row [ 'Status '])) 'und/oder' if (!null ($ row ['status'])) ' – rhavendc

Antwort

2

Wenn es leer ist, sollte es gibt alle Wetten von einem Benutzer. Der angegebene Code befindet sich in einer for-Schleife.

Da Sie überprüft, ob es leer ist, Ihre if Anweisung sollte umgekehrt sein:

if ($row['status'] == '') { 

Alternativ können Sie mysqli_num_rows() die Anzahl der Zeilen bekommen verwenden:

Gibt die Anzahl der Zeilen in der Ergebnismenge zurück.

$result = queryMysql("SELECT * FROM bets WHERE user='$user'"); 

if (mysqli_num_rows($result) > 0) { 
$row = mysqli_fetch_array($result); 
    echo "Status: " . $status . "</div>" . 
    "Published by: " . $user . "<br>" . 
    "PICK: " . $pick . "<br>" . 
    "Odds: " . $odds . "<br>" . 
    "Stake: " . $stake . "<br>" . 
    nl2br($analysis) ; 
} 

Auch gibt keine solche Funktion queryMysql() genannt ist:

$result = queryMysql("SELECT * FROM bets WHERE user='$user'"); 

Es sollte mysqli_query(). Für mysqli_query() wird der Verbindungsparameter benötigt.

$result = mysqli_query($conn, "SELECT * FROM bets WHERE user='$user'"); 
+1

$ row = mysqli_fetch_array ($ result); kommt in num_rows. – RJParikh

+0

@RuchishParikh Yup, danke für das Aufzeigen :) – Panda

+1

@davidk Hat das dein Problem gelöst? Vielleicht akzeptiere diese Antwort, indem du auf das Häkchen unter den Upvote/Downvote-Buttons klickst, danke :) – Panda

2

Sie verwenden identical Vergleich, der für type & value beide überprüfen würde. === oder !==, da dies den Typ und den Wert vergleicht.

Stattdessen versuchen -

if (!empty($row['status'])) { // assuming status would hold only strings (not false/0 etc) 

Oder

if ($row['status'] != '') { 
3

Verwendung mysqli_num_rows(). Wenn es größer als 0 ist, können wir diese Abfrage mit dem Ergebnis angeben, damit wir weiter fortfahren können.

$result = queryMysql("SELECT * FROM bets WHERE user='$user'"); 
if(mysqli_num_rows($result) > 0) 
{ 
    $row = mysqli_fetch_array($result); 

    if ($row['status'] != "") { 
    echo "Status: " . $status . "</div>" . 
    "Published by: " . $user . "<br>" . 
    "PICK: " . $pick . "<br>" . 
    "Odds: " . $odds . "<br>" . 
    "Stake: " . $stake . "<br>" . 
    nl2br($analysis) ; 
    } 
} 

Für Status überprüfen Sie alle unten Methode

if ($row['status'] != "") { } 

ODER

if (!empty($row['status'])) { }