2016-05-08 5 views
0

Das folgende PHP-Programm sucht nach einer Schülernummer in der Datenbank und zeigt die Details an, falls gefunden oder gibt eine Nachricht, wenn sie nicht existiert.PHP: While-Schleife wird nicht ausgeführt, wenn die Bedingung wahr ist

<html> 
<body> 
<?php 

$sno=$_POST['studNo']; 

$connection = mysql_connect("localhost", "root", "") 
    or die("couldn't connect to the server"); 

$db = mysql_select_db("student", $connection) 
    or die("<b>connection fails"); 

$query = "select * from performance where Number = '$sno'"; 

if($result = mysql_query($query)) 
{ 
    echo "<table border = 1 align = center>"; 
    echo "<tr>"; 
    echo "<th>Number<th>Name<th>Address<th>Mobile Number"; 
    echo "</tr>"; 

    while($row = mysql_fetch_array($result)) 
    {   
     echo "<tr>"; 
     echo "<th>",$row['Number'],"</th>"; 
     echo "<th>",$row['Name'],"</th>"; 
     echo "<th>",$row['Address'],"</th>"; 
     echo "<th>",$row['MobileNo'],"</th>"; 
     echo "</tr>"; 
    } 
    echo "</table>"; 
    echo "The student data updated"; 
} 

else 
{ 
    echo "<b>Customer number does not exist"; 
} 

mysql_close($connection); 
?> 
</body> 
</html> 

Wenn ich nach einer Nummer suche, die nicht existiert, wird der else Block ausgeführt. Wenn ich eine Nummer gebe, die existiert, dann wird der if-Block ausgeführt, aber die while-Schleife wird nicht ausgeführt. Kann mir jemand helfen? Datenbankfeldnamen sind korrekt.

+0

Warum ', $ row ['Number'],' der String verketten mit ','? –

+0

@FrayneKonok Sie können verwenden, finde ich es seltsam, sich selbst zu sehen :) – Dale

+0

Warnung: Ihr Code ist anfällig für [SQL-Injektion Angriffe] (https://en.wikipedia.org/wiki/SQL_injection). Bitte lies [diesen Beitrag] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php), um mehr darüber zu erfahren, wie man es verhindern kann. – Pang

Antwort

0

mysql_query() gibt nur false zurück, wenn in der Abfrage ein Fehler aufgetreten ist. Keine übereinstimmenden Zeilen zu finden, ist kein Fehler. Um festzustellen, ob Zeilen gefunden wurden, verwenden Sie mysql_num_rows().

$result = mysql_query($query) or die("Query error: " . mysql_error()); 
if (mysql_num_rows($result) > 0) { 
    ... 
} else { 
    echo "<b>Customer number does not exist</b>"; 
} 
+0

Vielen Dank. Es klappt. –

Verwandte Themen