2016-10-26 6 views
0

Ich habe eine Seite, wo ich einen Parameter in der URL als Filter für meine SQL-Abfrage verwenden. habe ich eine Variable aus den URL-Parametern:PHP MYSQL Tabelle zeigen nur eine Reihe von Ergebnissen

$station = htmlspecialchars($_GET["station"]); 

Dann eine bedingte Abfrage abhängig davon, ob oder nicht die URL-Parameter eingestellt sind eingerichtet:

if(isset($_GET['station'])) { 
    $query = "SELECT * FROM song_of_the_day WHERE station = '$station'"; 
} 
else { 
    $query = "SELECT * FROM song_of_the_day WHERE end_date >= CURDATE()"; 
} 
    $result = mysql_query($query) or die(mysql_error()); 
    $num_rows = mysql_fetch_row($result); 

Dann zeige ich die Ergebnisse in einer Tabelle:

echo "<table width='758' border='0' cellpadding='10' cellspacing='0' class='myTable'>"; 
while($row = mysql_fetch_array($result)) { 
echo '<tr>'; 
echo '<td align="left" width="48">' . $row['station'] . '</td>'; 
echo '<td align="left">' . date('M j, Y',strtotime($row['end_date'])) . '</td>'; 
echo '<td width="24" align="left"><a href="edit.php?id=' . $row['id'] . '"><img src="http://yourligas.yourli.com/ad-inventory/edit.png" border="0"></a></td>'; 
echo '<td width="24" align="left"><a href="delete.php?id=' . $row['id'] . '" data-confirm="Are you sure you want to delete this entry?" ><img src="http://yourligas.yourli.com/ad-inventory/remove.png" border="0"></a></td>'; 
echo "</tr>"; 
echo '</tbody>'; 
    } 
echo "</table>"; 

die Abfrage funktioniert finden, wenn der ELSE-Befehl die Abfrage verwendet, wo ich nicht auf den Parameter in meinem SQL verlasse mich, aber das Problem, das ich sehe, wenn die URL paramete Bei ISST wird nur eine Zeile aus der Abfrage angezeigt, wenn mehr als eine Zeile den Kriterien in der aktuellen Datenbank entspricht. Weiß jemand, warum das passiert?

Danke

+0

Sie sollte nicht sein. Schau dir PDO an, bitte! – Shiv

+0

*** Bitte [stoppen Sie die Verwendung von mysql_ * 'Funktionen] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php). *** [Diese Erweiterungen ] (http://php.net/manual/en/migration70.removed-exts-sapis.php) wurden in PHP 7 entfernt. Erfahren Sie mehr über [prepared] (http://en.wikipedia.org/wiki/Prepared_statement) Anweisungen für [PDO] (http://php.net/manual/en/pdo.prepared-statements.php) und [MySQLi] (http://php.net/manual/en/mysqli.quickstart.prepared- Statements.php) und erwäge die Verwendung von PDO, [es ist wirklich ziemlich einfach] (http://jayblanchard.net/demystifying_php_pdo.html). –

+0

[Little Bobby] (http://bobby-tables.com/) sagt *** [Ihr Skript ist für SQL Injection Attacks gefährdet.] (Http://stackoverflow.com/questions/60174/how-can- i-prevent-sql-injection-in-php) ***. Sogar [die Zeichenfolge zu entkommen] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) ist nicht sicher! –

Antwort

0

In dieser Zeile die erste Zeile von Daten raubend zu sein scheinen bei dem Versuch, die Anzahl der Zeilen gefunden zu erhalten:

$num_rows = mysql_fetch_row($result); 

dies die erste Zeile aus dem Ergebnis Cursor entfernt .

Stattdessen Sie wahrscheinlich gemeint, Folgendes zu tun: mit mysql

$num_rows = mysql_num_rows($result); 
+0

Wow, das hat perfekt funktioniert .... Ich kann dir nicht genug danken! –

Verwandte Themen