php警告mysql_fetch_assoc

时间:2009-12-14 15:12:47

标签: php mysql

我正在尝试从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 个答案:

答案 0 :(得分: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结果资源的mysql_fetch_assoc(无论是字符串,对象还是布尔值),该函数会抱怨它不知道如何处理该参数;这正是你所看到的。

常见问题:如果您将某些内容(有效查询字符串除外)传递给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 :(得分:1)

如果没有看到getmusicfiles的代码,我们就无法帮助您。您应该在该函数中返回一个有效的mysql资源。

答案 2 :(得分: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)) {
    ...
}

答案 3 :(得分:0)

这取决于究竟是什么getmusicfiles() does。它必须返回mysql_query()函数调用的结果,然后它将是“有效的MySQL结果”。

你很可能想把$mus=mysql_fetch_assoc($musicfiles)行放在for周期内,一个接一个地获取几行。

答案 4 :(得分:0)

我认为您需要指定函数getQuery()

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

确实

答案 5 :(得分:0)

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

$m_id != $s_id