Veröffentlicht 26. September 200717 j Hallo Community! Ich habe ein dickes PHP Problem an dem ich schon ne ganze weile festhänge. $abfrage = mysql_query("select postfach from msg_user where username = '$nicknameto'"); if(mysql_num_rows($abfrage) > 5) { $this->send("Der Posteingang von $nicknameto ist voll."); } else {[/PHP] Ich lasse mir dann die num_rows ausgeben aber diese sind 0 obwohl sie in meiner Tabelle NICHT 0 sind, weiß evtl. einer was da schief läuft? grüße
26. September 200717 j Nagel mich nicht drauf fest, aber sollte das nicht $abfrage = mysql_query("select postfach from msg_user where username = ".$nicknameto.""); heißen?
26. September 200717 j Hast du in deiner DB- Klasse function num_rows() { return mysql_num_rows($this->Query_ID); } So mache ich das immer ! Oder vll solltest du deinen SELECT ausgeben und diesen dann über PHPMYADMIN absetzen und dann schauen was rauskommt !
26. September 200717 j @Dukanos: Der Select stimmt eigentlich so wie ich ihn habe, hab ihn auch schon direkt in phpmyadmin getestet @HJST1979: Ich brauch dafür ne extra funktion?
26. September 200717 j Nein, du brauchst eig. keine neue Funktion dafür. Ich tippe mal auch auf den Fehler von Dukanos. SELECT postfach FROM msg_user WHERE username = '$nicknameto' [/PHP] So sieht der String aus wenn er zur Datenbank geht. $nicknameto ist ebenfalls eine Stringvariable, die in einem String geht. Die musst du also verketten. Lösung s. Oben. Mit freundlichen Grüßen, Cadpax
27. September 200717 j $abfrage = mysql_query("select postfach from msg_user where username = '$nicknameto'"); if (!$abfrage) { $this->send("MySQL-Fehler: ". mysql_error()); } else { if(mysql_num_rows($abfrage) > 5) { $this->send("Der Posteingang von $nicknameto ist voll."); } else { ... } [/PHP] Ich würde das mal probieren. Dann weißt du, dass deine Abfrage wirklich funktioniert hat. Das mit der Variable im String ist so ok. Variablen in Strings mit " werden vom PHP durch deren Inhalt ersetzt. Bei Strings mit ' ist das nicht so. Also ist das Konstrukt oben vollkommen ok. Ach ja, du solltest mysql_query auf jeden Fall die Verbindungskennung mitgeben (als zweiten Parameter). Ja das muss man nicht, aber es ist sauberer finde ich. Du könntest ja zwei Verbindungen offen haben oder sonst was. Wenn du die Verbindung immer mitgibst brauchst du dich darum nicht zu kümmern. Es ist ja toll wenn php sowas alleine macht, aber das ist damit auch viel anfälliger und unkontrollierbarer, IMHO. Gib deiner Klasse eine Property db, in der die Verbindung steht: [php] class Bla { var $db; ... $this->db = mysql_connect('localhost', 'mysql_user', 'mysql_password'); ... $result = mysql_query("bla bla", $this->db); ... }
28. September 200717 j danke ich habs nun rausbekommen woran das lag $num_rows = mysql_num_rows($abfrage); ... ganz simpel *g*
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.