2012-04-27 3 views
2

У меня есть этот код:таинственное предупреждение в PHP

<?php 
include 'connect.inc.php'; 
include 'header.inc.php'; 


$mesiace = array("Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl",  
"August", "September", "Október", "November", "December"); 

echo '<div id="rozpis">'; 
$sql = "SELECT game_id, rival_id, result, h_a, UNIX_TIMESTAMP(datum) AS datum FROM  game ORDER BY datum ASC"; 
$result = mysql_query($sql, $db) or die("ERROR: ".mysql_error()); 
if(mysql_num_rows($result) > 0) 
{ 
echo '<table>'; 
echo '<tr><td>Dátum</td><td>Domáci</td><td>Hostia</td><td>Výsledok</td></tr>'; 
while($row = mysql_fetch_array($result)) //here is the problem 
{ 
extract($row); 
$prikaz = 'SELECT rival_id, name FROM rival WHERE rival_id = '. $rival_id; 
$vystup = mysql_query($prikaz, $db) or die(mysql_error($db)); 
$rival = mysql_fetch_array($vystup); 
echo '<tr>'; 
echo '<td>' .date("j. F Y", $datum). '</td>'; 
if ($h_a == 1) 
{ 
echo '<td> Capitals </td>'; 
echo '<td>' .$rival['name']. '</td>'; 
} 
else 
{ 
echo '<td>' .$rival['name']. '</td>'; 
echo '<td> Capitals </td>'; 
} 
echo '<td><a href="zapas.php?zapas='. $game_id.'">' .$result. '</td>'; 
echo '</tr>'; 
} 
echo '</table>'; 
} 
else 
echo 'No matches'; 

echo '</div>'; 

include 'zahlavie.php'; 
?> 

Когда я запускаю этот скрипт он записывает это предупреждение:

Warning: mysql_fetch_array() expects parameter 1 to be resource, 
string given in H:\xampp\htdocs\rozpis.php on line 16 

Я действительно не знаю, где проблема. В таблице у меня три строки, но она записывает только первый, а затем это сообщение. Когда я запускаю $query в phpMyAdmin, он работает правильно или когда я использую echo mysql_num_rows($result), он также корректно возвращает.

+0

Что вы получаете, если вы 'var_dump ($ result)'? – Travesty3

+2

Модуль 'mysql'? Зачем? – xfix

+0

Что такое '$ db'? Is - это имя вашей базы данных или результат запуска 'mysql_connect'? – Sampson

ответ

5

Проблема в том, что вы используете функцию extract, а один из ваших столбцов db называется «результатом». Таким образом, будет переписываться переменная $ result с некоторой строкой, что, конечно, неверно.

$sql = "SELECT game_id, rival_id, result, h_a, UNIX_TIMESTAMP(datum) AS datum FROM  game ORDER BY datum ASC"; 
$result = mysql_query($sql, $db) or die("ERROR: ".mysql_error()); 
while($row = mysql_fetch_array($result)) { 
    extract($row); // <- here is the problem 
+0

Yikes, я бы не встретил эту функцию раньше. Я буду помнить, никогда не использовать его! ';-)' – halfer

+2

+1: отличное место. Быстрое решение заключалось бы в использовании 'EXTR_PREFIX_ALL' для префикса полей. – cmbuckley

+0

спасибо большое :) проблема была в extract ($ row) – minho

Смежные вопросы