[MySQL] Fehler anzeigen

oldputz1990

Erfahrenes Mitglied
Hallo!

Meine DB Struktur sieht so aus:

http://img520.imageshack.us/img520/6358/dbfu0.png


Mein Script so:

PHP:
	$album = mysql_real_escape_string(strip_tags($_GET['id']));

	$bild = mysql_real_escape_string(strip_tags($_GET['file']));

$select_album_info = mysql_query("SELECT * FROM `fotoalbum` WHERE `id` = '$album'")OR DIE(mysql_error());
$select_array_album = mysql_fetch_assoc($select_album_info);

$num_gesamt = mysql_num_rows(mysql_query("SELECT `id` FROM `fotos-privat` WHERE `album` = '$album'"))OR DIE(mysql_error());


// Hier ist die Variable::
$num_coments = mysql_num_rows(mysql_query("SELECT `id` FROM `kommentare_privat` WHERE `bildid` = '$bild'")) OR DIE (mysql_error());




$select_bild_daten = mysql_query("SELECT * FROM `fotos-privat` WHERE `id` = '$bild'")OR DIE(mysql_error());
$select_array_daten = mysql_fetch_assoc($select_bild_daten);

$picture = ''.$select_array_daten['id'].'.'.$select_array_daten['type'].'';


Also: Wenn ich die Variable "$num_comments" lösche, funktioniert das Script prima!
Wenn ich sie aber lass, dann wird gar nichts mehr angezeigt. (Auch kein Fehler)

Wenn ich die Variable so änder:

PHP:
$num_coments = mysql_num_rows(mysql_query("SELECT `id` FROM `kommentare_privat` WHERE `bildid` = '$bild'")) OR DIE ("asdkld");

Dann wird "asdkld" angezeigt.


Ich kann aber nirgends einen Fehler finden?!

Danke!
 
Hmm schon mal versucht es in 2 Zeilen aufzutrennen?

Das du da mysql_num_rows() verwendet hatte ich eben erst richtig Realisiert. Wenn die Query funktioniert, aber 0 Datensätze gefunden hat, trifft das OR DIE() Nämlich auch zu. Da 0 gleich false gleich null

PHP:
$res = mysql_query("SELECT count(`id`) FROM `kommentare_privat` WHERE `bildid` = '$bild'") OR DIE (mysql_error())
$num_coments = mysql_fetch_field($res, 0);


Edit:

das gleiche kann dir mit $num_gesamt auch passieren, generell währe es schneller wenn du in der query direkt darüber SELECT *, count(*) as `num_gesamt` machen würdest, und schon in der ersten query gleich die anzahl mitbekommen.
 
Zuletzt bearbeitet:
Müsste es nicht so heißen:

PHP:
$num_coments = mysql_num_rows(mysql_query("SELECT `id` FROM `kommentare_privat` WHERE `bildid` = '$bild'")OR DIE (mysql_error()));

EDIT. zu spät.

EDIT2: Eigentlich tritt OR DIE() nur bei FALSE ein oder? Und mysql_num_rows liefert logischer Weise kein boolschen Wert. Von daher wird das OR DIE() dort nie greifen.
 
Zuletzt bearbeitet:
Catchable fatal error: Object of class stdClass could not be converted to string in C:\Programme\xampp\htdocs\uttx\_new_old_house\fotoalbum.php on line 1116

Zeile 1116:
PHP:
						echo '<div style="float: right"><b>Views:</b> '.$select_array_album['views'].'<br><b>Comments:</b> '.$num_coments.'</div>';

Dazugehöriges Script:

PHP:
$num_gesamt = mysql_num_rows(mysql_query("SELECT `id` FROM `fotos-privat` WHERE `album` = '$album'"))OR DIE(mysql_error());


$res = mysql_query("SELECT count(`id`) FROM `kommentare_privat` WHERE `bildid` = '$bild'") OR DIE (mysql_error());
$num_coments = mysql_fetch_field($res, 0);  


$select_bild_daten = mysql_query("SELECT * FROM `fotos-privat` WHERE `id` = '$bild'")OR DIE(mysql_error());
$select_array_daten = mysql_fetch_assoc($select_bild_daten);
 
Zuletzt bearbeitet:
War nen Denkfehler xD mysql_fetch_field macht ja nicht so ganz das wie es heißt... und von Zeit zu Zeit verdräng ich das *g*

mit mysql_fetch_row o.Ä. gehts ^^

PHP:
$res = mysql_query("SELECT count(`id`) FROM `kommentare_privat` WHERE `bildid` = '$bild'") OR DIE (mysql_error());
list($num_coments) = mysql_fetch_row($res);
 
Hatte ich oben ja geschrieben.

Ich denke das noch 0 Kommentare vorhanden waren. Und num_rows hat 0 zurückgeliefert.

Da PHP ein automatisches Type-Casting vornimmt ist 0, false, NULL und "0" das gleiche. Es wurden 0 Datensätze gefunden und OR DIE schlägt zu.
 
Zurück