php warning mysql_fetch_assoc

Я пытаюсь получить доступ к некоторой информации из mysql, но получаю предупреждение: mysql_fetch_assoc (): предоставленный аргумент не является допустимым ресурсом результата MySQL для второй строки кода ниже, любая помощь будет высоко оценена.

$musicfiles=getmusicfiles($records['m_id']); $mus=mysql_fetch_assoc($musicfiles); for($j=0;$j<2;$j++) { if(file_exists($mus['musicpath'])) { echo '<a href="'.$mus['musicpath'].'">'.$mus['musicname'].'</a>'; } else { echo 'Hello world'; } } function getmusicfiles($m_id) { $music="select * from music WHERE itemid=".$s_id; $result=getQuery($music,$l); return $result; } 

Как правило, функции mysql_ * используются следующим образом:

 $id = 1234; $query = 'SELECT name, genre FROM sometable WHERE id=' . $id; // $query is a string with the MySQL query $resource = mysql_query($query); // $resource is a *MySQL result resource* - a mere link to the result set while ($row = mysql_fetch_assoc($resource)) { // $row is an associative array from the result set print_r($row); // do something with $row } 

Если вы передадите что-то в mysql_fetch_assoc, который не является ресурсом результата MySQL (будь то строка, объект или логическое значение), функция будет жаловаться, что она не знает, что делать с параметром; что именно вы видите.

Обычная информация : вы получаете это предупреждение, если передаете mysql_query что-то (отличное от допустимой строки запроса):

 $id = null; $query = 'SELECT name, genre FROM sometable WHERE id=' . $id; $res = mysql_query($query); // $res === FALSE because the query was invalid // ( "SELECT name, genre FROM sometable WHERE id=" is not a valid query ) mysql_fetch_assoc($res); // Warning: don't know what to do with FALSE, as it's not a MySQL result resource 

Не видя кода getmusicfiles, мы не можем с ним по-настоящему помочь. Вы должны возвращать действительный ресурс mysql в этой функции.

Как отмечали другие, вам нужно вернуть действительный ресурс mysql в функцию mysql_fetch_assoc, чтобы получить следующую строку. Например:

 $sql = "select * from table"; $resultSet = mysql_query($sql) or die("Couldn't query the database."); echo "Num Rows: " . mysql_num_rows($resultSet); while ($resultRowArr = mysql_fetch_assoc($resultSet)) { ... } 

Я думаю, вам нужно указать, что функция getQuery()

 $result=getQuery($music,$l); 

делает

Это зависит от того, что именно getmusicfiles() does . Он должен возвращать результат mysql_query() функции mysql_query() , тогда он будет «действительным результатом MySQL».

И вы, скорее всего, захотели поместить строку $mus=mysql_fetch_assoc($musicfiles) внутри цикла for для извлечения нескольких строк один за другим.

 function getmusicfiles($m_id) { $music="select * from music WHERE itemid=".$s_id; 

$m_id != $s_id ?