[英]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结果资源的内容(无论是字符串,对象还是布尔值)传递给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
没有看到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)) {
...
}
这取决于getmusicfiles() does
确切getmusicfiles() does
。 它必须返回mysql_query()
函数调用的结果,然后将是“有效的MySQL结果”。
而且,您很可能希望将$mus=mysql_fetch_assoc($musicfiles)
放在for
循环内, for
一次又一次地获取几行。
我认为您需要指定什么函数getQuery()
$result=getQuery($music,$l);
确实
function getmusicfiles($m_id) { $music="select * from music WHERE itemid=".$s_id;
$m_id != $s_id
吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.