Я пытаюсь получить доступ к некоторой информации из 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
?