2009-12-14 2 views
1

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

$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; 
} 
+0

Какое определение 'getmusicfiles()'? –

+0

И каково определение getQuery()? Есть ли где-нибудь вызов mysql_query? Если нет, вы получите предупреждение, как и должно быть. – Piskvor

+0

Да, есть, и он отлично работает, так как я использовал его совсем немного на моем сайте. –

ответ

1

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

0

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

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

5

Как правило, 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 
1

Как уже отмечалось, необходимо вернуть действительный ресурс 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)) { 
    ... 
} 
0

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

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

делает

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

$m_id != $s_id?