2017-02-16 4 views
-2

Ich arbeite an einer MySQL-Datenbank mit zwei Tabellen mit den Tabellen p und g. Hier versuche ich zu überprüfen, ob der Wert einer Variable $ Ureciever von einer ausgewählten Abfrage in Tabelle 'p' leer ist oder nicht und basierend auf dieser Aktualisierung zwei verschiedene Spalten 'partner1' und 'partner2' in Tabelle 'g' mit der Sitzungs-Benutzernamen-Variable. Nur einer von "partner1" und "partner2" sollte in einer Iteration des Codes aktualisiert werden.

if(empty($ureciever)) { 
     {  
$query ="UPDATE g 
     SET partner1= '".$_SESSION['username']."' 
     WHERE packageg = '$upackage' AND banned = 0 AND partner1 ='' 
     ORDER BY useridg ASC 
     LIMIT 1"; 
$result = mysql_query($query); 
$count = mysql_affected_rows($conn); 
    } 
if($count == 1){ 
    $countdown = time() + 648000; 
$query = "UPDATE p AS p 
    JOIN g AS g ON p.username = g.partner1 
    SET p.reciever = g.usernameg, p.time_expires = '$countdown' 
    WHERE p.username ='".$_SESSION["username"]."'"; 
$result = mysql_query($query); 
$count1 = mysql_affected_rows($conn); 
} 

Der obige Codeabschnitt ausführt richtig, aber den alternativen Code, der ausgeführt werden soll, wenn die Bedingung falsch ist einfach getestet wird, nicht ausgeführt. Ich habe meine Klammern, Semikolons, überprüft, die Testbedingung wurde auf keinen positiven Effekt umgeschrieben. Dies ist der Abschnitt, der mir unten Probleme bereitet.

else if($count != 1){ 

    $query= "UPDATE g 
     SET partner2 = '".$_SESSION['username']."' 
     WHERE packageg = '$package' AND banned = 0 AND partner2 ='' 
     ORDER BY useridg ASC 
     LIMIT 1"; 
$result2 = mysql_query($query); 
$count2 = mysql_affected_rows($conn); 
} 
if ($count2 == 1) 

    { 
     $countdown = time() + 648000; 
$query = "UPDATE p AS p 
     JOIN g AS g ON p.username = g.partner2 
     SET p.reciever = g.usernameg, p.time_expires = '$countdown' 
     WHERE p.username ='".$_SESSION["username"]."'"; 
$result = mysql_query($query); 
$count1 = mysql_affected_rows($conn); 
     } 
} 

else{ 

$_SESSION['paired'] = "You have been matched to pay someone. Please be quick"; 
     } 
+0

leer Rückkehr wahr oder falsch ... Ihr Zustand 0 oder 1 == "" niemals wahr Verwendung empty ($ var) zurückkehren || $ var == "" –

+0

Zuerst diese Aussage if (leer ($ ureciever) == '') ist falsch muss nicht mit '' leer sein selbst überprüfen es richtig machen if (leer ($ urreciever)) –

Antwort

1

empty($ureciever) würde boolean zurückgeben. Also TRUE/FALSE!=' '.

Keine Überprüfung erforderlich empty($ureciever)== ' '. So sollte der Code sein -

if(empty($ureciever)) { 
    ...... 
} 

empty()

+0

Sie haben Recht. Ich habe jetzt seit einigen Stunden mit dem Code herumgespielt und dabei Verbesserungen vorgenommen, von denen ich denke, dass sie Auswirkungen auf den Code haben könnten. Ich habe das geändert. – drazy

0

Okay, so dass ich es endlich herausgefunden. Das Problem kam von der Verwendung der Variable $ upackage. Vergleichen Sie die richtige Form im Abschnitt unmittelbar unterhalb auf die versehentliche Verwendung von $ -Paket in dem zweiten/letzten Codeabschnitt

$query ="UPDATE g 
     SET partner1= '".$_SESSION['username']."' 
     WHERE packageg = **'$upackage'** AND banned = 0 AND partner1 ='' 
     ORDER BY useridg ASC 
     LIMIT 1"; 

Manchmal denke ich, wir müssen nur Schritt von dem Problem weg und etwas anderes zu tun, dann kommen Sie wieder mit einer neuen Perspektive. Problem gelöst!

$query= "UPDATE g 
     SET partner2 = '".$_SESSION['username']."' 
     WHERE packageg = **'$package'** AND banned = 0 AND partner2 ='' 
     ORDER BY useridg ASC 
     LIMIT 1"; 
Verwandte Themen