Hallo Leute,
ich hoffe, dass das Topic nicht zu konfus ist, aber mir ist keine bessere Formulierung eingefallen.
Also: ich habe eine MySQL Datenbank mit einer Tabelle "tbl_farben_schriften" , in der die Felder "far_id", "far_RGB" und "far_typ" vorhanden sind. "far_id" und "far_typ" haben den Datentyp int(11), "far_RGB" hat den Datentyp varchar(7). So weit so gut.
In PHP führe ich nun folgende Abfrage aus:
//Farbdaten fuer Schriften holen
$sql="SELECT * FROM tbl_farben_schriften";
$erg=$db->query($sql);
if($erg)
{
$i=0;
while($FarbenSchriften[$i]=mysql_fetch_array($erg))
{
$meldung1.=gettype($FarbenSchriften[$i]['far_typ'])."<br>";
$i++;
}
}
$FarbenSchriftenAnzahl=$db->getAnzahl();
Das funktioniert auch erstmal. Aber wenn ich mir später im Skript die Variable $meldung1 ausgeben lasse, sehe ich, dass der Typ von $FarbenSchriften[$i]['far_typ'] "string" ist. Da ich später mit dem Operator === arbeite, funktioniert dann natürlich sowas nicht:
if($FarbenSchriften[21+$i]['far_typ']===2)
{
$bgColor=$FarbenSchriften[21+$i]['far_RGB'];
}
Daher nun meine Frage(n): Ist das wirklich ein Bug von PHP, dass die Typen der einzelnen Tabellenspalten nicht korrekt übergeben werden, oder mache ich irgendetwas falsch?
Ich habe in der Hilfe zu PHP (hier als deutsche CHM-Datei vorhanden) leider nichts gefunden zu dieser Problematik bei mysql_fetch_array()
Würdet ihr in so einem Fall einfach auf das === verzichten und nur == nehmen (dann funktioniert es ja anscheinend wieder)?
Oder wäre es "sauberer" den Typ von $FarbenSchriften[21+$i]['far_typ'] explizit auf Integer zu setzen?
Ich meine: ich könnte ja auch einfach die 2 in Anführungszeichen setzen, dann funktioniert es auch wieder, aber ich fände es schon schöner, wenn ich mich auf den Typ aus der Datenbank verlassen könnte...
liebe Grüße mbr