[MySQL] Frage zu mxsql_fetch_array()

StefanR

Erfahrenes Mitglied
Hallo ich habe da mal ne Frage zu der für MySQL vorgesehenen PHP-Funktion mysql_fetch_array(). Und zwar, kann das sein, dass wenn diese Funktion keine Datensätze in das Array schreiben kann, da die DB lehr ist, Fehler hervorruft. Jetzt nicht Fehlermeldungen, aber meine Scripte funktionieren denn nicht mehr.

Hier mal ein Beispiel, welches ohne Inhalt, in der Tabelle, das formular nicht ausgibt, erst wenn wenigstens ein Datensatz in der DB ist.
PHP:
<?php 
	include("../inc/db/config.php");
	//Select der relevanten Daten
	
	//Auslesen der bisher erstellten Kategorien.
	
	$sql_katzei="SELECT * FROM cms4me_news_kat";
	$query_katzei=mysql_query($sql_katzei) or die (mysql_error());
	$katzei=mysql_fetch_array($query_katzei) or die(mysql_error());
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="pragma" content="no-cache"></head>
<body>
<form action="news_kat_new.php" onSubmit="return chkFormular(document.form1.katname.value.length, 3)" method="post" enctype="multipart/form-data" name="form1">
<table width="100%" border="0">
  <tr>
    <td width="25%">Kategoriename</td>
    <td width="75%"><input name="katname" type="text" id="katname"></td>
  </tr>
   <tr>
    <td width="25%">&nbsp;</td>
    <td width="75%"><input name="new_kat" type="submit" id="new_kat" value="Kategorie erstellen" ></td>
  </tr>
</table>
</form>
</body>
</html>

Kann man das irgendiwe abstellen oder umgehen?
 
ich weiss ja nicht ob du da einen fehler drin hast, aber für mich passt dein fetch nicht zu sql abfrage.

bei $sql_katzei="SELECT * FROM cms4me_news_kat";
würde ich erwarten das in der tabelle cms4me_new_kat mehrere datensätze drinstehen, d.h. du mit einer schleife jeden datensatz ausgeben oder in ein array speichern musst.

und was meinst du damit das sie "nicht mehr funktionieren" ? brechen sie ab oder wird der html kram ohne inhalt ausgegeben oder wie?

kannst es ja mit
PHP:
if( ! count($katzei) )
             die "keine Datensätze vorhanden"

abfragen oder machst dir mit mysql_num_rows eine weitere abfrage ob denn das statement überhaupt was zurückgibt und wenn ja führst du den rest des scriptes aus
 
Hallo, danke erstmal für deine Antwort.

ja, normalerweise steht was in der Tabelle mir ging es nur mal darum, dass dieses Formular dafür da ist, um neue Datensätze zu erstellen, da kann es ja durchaus mal vorkommen, dass die Tabelle lehr ist. :) Und wenn sie nicht leer ist, denn gibt die Seite weiter unten die Kategorien aus, die schon vorhanden sind, aber danke für den Tipp , zu der mysql_num_rows() Geschichte, werde das denn mal abfangen.

Gruß Stefan
 
naja das mit den numrows würde ich bei stark besuchter seite eher gegen das count tauschen, da ich denke das es nicht viel mehr macht als die pointer auf den speicher zu zählen und bei num rows muss die db halt wieder bschäftigt werden... aber in dem fall dürfte das nicht so schlimm sein ;)
 
Zurück