php uyarı mysql_fetch_array

6 Cevap php

Mysql bazı bilgilere erişmek için çalışıyorum, ama uyarıyı alıyorum: mysql_fetch_array (): Verilen argümanı aşağıda kod ikinci hat için geçerli MySQL result resource değildir, herhangi bir yardım çok takdir.

$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 Cevap

Şöyle Genel olarak, mysql_ * fonksiyonları kullanılmıştır:

$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
}

Eğer bir MySQL sonuç kaynak (bir dize, bir nesne ya da bir mantıksal olsun) değil Mysql_Fetch_Assoc şey geçirirseniz, fonksiyon parametresi ile ne yapacağını bilmiyor şikayet edecektir; hangi görüyorsanız tam olarak ne olduğunu.

A common gotcha: Eğer için (geçerli bir sorgu dize dışında) bir şey geçmesi halinde bu uyarıyı almak 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 kodunu görmeden biz gerçekten size yardımcı olabilecek bir şey yok. Siz bu işlevi geçerli mysql kaynak iade edilmelidir.

Diğerleri de belirtildiği gibi, bir sonraki satır almak için mysql_fetch_array fonksiyonu geçerli bir mysql kaynak dönmek gerekiyor. Örneğin:

$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)) {
    ...
}

Ben size belirtmek gerektiğini düşünüyorum ne fonksiyon getQuery()

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

yok

Bu bağlıdır tam olarak ne getmusicfiles() does. Bu mysql_query() işlev çağrısının bir sonuca dönmek gerekir, o bir "geçerli MySQL result" olacaktır.

Ve büyük olasılıkla birkaç satır birbiri ardına getirmek için for döngüsünün içindeki çizgi $mus=mysql_fetch_assoc($musicfiles) koymak istedim.

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

$m_id != $s_id?