Problem bei SQL Abfrage, finde keinen Fehler

ciberjoerg

Erfahrenes Mitglied
Ich bekomme auf meinem Testserver (xampp Windows) eine Fehlermeldung beim abfragen einer Db Abfrage.
Code:
Warning: mysql_fetch_array() expects parameter 1 to be resource, string given in D:\xampp\htdocs\cdlib\auto.php on line 131

Mein php Code:
PHP:
<?
if(isset($_REQUEST['search']))
{
	include"config.php";
	$sid=@$_REQUEST['search'];
	
$sql_res = "SELECT
	so.artist AS artist,
    so.song AS song,
	so.laenge AS laenge,
	so.liste AS liste
FROM
    songs AS so
WHERE
	so.id = '$sid'
UNION SELECT
	cd.titel AS titel
FROM
    cd_id AS cd
WHERE
	cd.cdname = so.cd_id  
";
while($row=mysql_fetch_array($sql_res))
{
	$artist= $row['artist'];
	$song= $row['song'];
	$leange = $row['laenge'];
	$cd_id = $row['titel'];
	$liste = $row['liste'];
	echo $artist." - ".$song." (CD: ".$cd_id." Lied: ".$liste.")<br>";
}
}
?>

cd.cdname ist die cd_id aus der Zeile der id die gesucht werden soll
 
Du hast diesen Schritt vergessen:

PHP:
$sql_fetch = mysql_query($sql_res);

und dann kommt erst:

PHP:
while($row=mysql_fetch_array($sql_fetch))
 
Bekomme leider immernoch eine Fehlermeldung.

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in D:\xampp\htdocs\cdlib\auto.php on line 132
 
Führe das Select mal in deiner Datenbank aus, der Fehler weißt darauf hin das, dass Select falsch ist, wie kann ich auch nicht sagen da ich deine Tabellen auch nicht kenne...

Oder du fügst ein:

PHP:
if ($sql_fetch){
die(mysql_error());
}

vor die While-Schleife
 
Zuletzt bearbeitet:
Hab das Problem gelöst das lag wohl am Union Join.

PHP:
$sql_res = "
SELECT so.artist as artist, so.song AS song, so.laenge AS laenge, so.liste AS liste, cd.titel AS titel
FROM songs AS so, cd_id AS cd
WHERE so.cd_id = cd.cdname AND so.id = '$sid'
";
 
Hast du vielleicht immer noch
PHP:
while($row=mysql_fetch_array($sql_res))
drinstehen?
Das muss jetzt natürlich
PHP:
while($row=mysql_fetch_array($sql_fetch))
heißen.

EDIT:

UPS, der Post ging ja noch weiter ... (bin heute wohl schon zu müde zum Scrollen)
... Sorry.
 
Zuletzt bearbeitet:
Hast du vielleicht immer noch
PHP:
while($row=mysql_fetch_array($sql_res))
drinstehen?
Das muss jetzt natürlich
PHP:
while($row=mysql_fetch_array($sql_fetch))
heißen.

EDIT:

UPS, der Post ging ja noch weiter ... (bin heute wohl schon zu müde zum Scrollen)
... Sorry.

Und auch wenn, die erste Fehlermeldung bedeutet das er einen String bekommt und die zweite das er einen Boolean bekommt. Und ein String bedeutet das er wirklich eine Zeichenkette in den Mysql_fetch_array gegeben hat, der boolean kommt dann zu standen wenn der Select falsch ist. Der Reteturn ist dann eben false
 
Zurück