2016-10-26 1 views
0

У меня есть страница, где я использую параметр в URL как фильтр для моего SQL-запроса. я создал переменную из параметра URL:PHP MYSQL Table отображает только одну строку результатов

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

Затем установите условный запрос в зависимости от наличия или отсутствия устанавливается параметр URL:

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); 

Затем я отображения результатов в таблице:

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>"; 

запрос работает найти, когда команда ELSE использует запрос, где я не полагаясь на параметр в моем SQL, но проблема, которую я вижу, когда URL paramete r ISSET отображает только одну строку из запроса, когда имеется более одной строки, которая соответствует критериям в фактической базе данных. Кто-нибудь знает, почему это происходит?

Спасибо

+0

Вы не должны использовать MySQL. Посмотрите на PDO, ПОЖАЛУЙСТА! – Shiv

+0

*** Пожалуйста, прекратите использование 'mysql_ *' функций (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php). *** [Эти расширения ] (http://php.net/manual/en/migration70.removed-exts-sapis.php) были удалены в PHP 7. Узнайте о [подготовленном] (http://en.wikipedia.org/wiki/Prepared_statement) для [PDO] (http://php.net/manual/en/pdo.prepared-statements.php) и [MySQLi] (http://php.net/manual/en/mysqli.quickstart.prepared- statements.php) и подумайте об использовании PDO, [это действительно довольно легко] (http://jayblanchard.net/demystifying_php_pdo.html). –

+0

[Little Bobby] (http://bobby-tables.com/) говорит *** [ваш скрипт подвержен риску инъекций SQL.] (Http://stackoverflow.com/questions/60174/how-can- я-не допустить, SQL-инъекцию-в-PHP) ***. Даже [избегая строки] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) небезопасно! –

ответ

0

В этой строке, вы, кажется, потребляя первую строку данных при попытке получить число строк найдено:

$num_rows = mysql_fetch_row($result); 

Это удаляет первую строку из результирующего курсора ,

Вместо этого, вы, вероятно, имел в виду, чтобы сделать следующее:

$num_rows = mysql_num_rows($result); 
+0

Ничего себе, это сработало отлично ... Я не могу вас поблагодарить! –