предупреждение php mysql_fetch_assoc - PullRequest
1 голос
/ 14 декабря 2009

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

Ответы [ 6 ]

5 голосов
/ 14 декабря 2009

Обычно функции 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 голос
/ 14 декабря 2009

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

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

0 голосов
/ 29 марта 2010
function getmusicfiles($m_id) {
$music="select * from music WHERE itemid=".$s_id;

$m_id != $s_id?

0 голосов
/ 14 декабря 2009

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

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

делает

0 голосов
/ 14 декабря 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...