Problem mit SELECT COUNT(*) FROM ...
Thomas
- php
Hallo,
ich möchte testen ob ein bestimmter Eintrag in einer MySQL DB schon existiert.
$query = "SELECT COUNT(*) FROM meineTabelle WHERE meinFeld='$meinWert'";
$result = $db->query($query);
$foo= mysql_fetch_array($result);
echo "$foo";
gibt nichts aus. Was mache ich falsch?
Gruß
Thomas
Hello,
gibt nichts aus. Was mache ich falsch?
weiß nicht. Vermutlich ignorierst du einen Fehler, wo ist die Fehlerbehandlung...?
MfG
Rouven
Hi!
> $query = "SELECT COUNT(*) FROM meineTabelle WHERE meinFeld='$meinWert'";
> $result = $db->query($query);
> $foo= mysql_fetch_array($result);
> echo "$foo";
gibt nichts aus. Was mache ich falsch?
Versuche mal ein
var_dump($foo)
dann siehst Du, dass die Funktion mysql_fetch_array aus gutem Grund _so_ heißt, denn sie gibt ein Array zurück.
off:PP
var_dump($foo)
Das gibt bool(false) aus.
Hi!
» ~~~php
» var_dump($foo)
»
> Das gibt bool(false) aus.
Wie sieht denn die Query aus? Test mal:
~~~php
echo $query;
Was sagt mysql_error?
off:PP
Hi,
»» » ~~~php
»» » var_dump($foo)
»» »
> »» Das gibt bool(false) aus.
>
> Wie sieht denn die Query aus? Test mal:
> ~~~php
> echo $query;
>
Die query ist o.k., wenn ich sie mit c&p in phpmyadmin eingeben funktioniert sie.
Was sagt mysql_error?
echo mysql_errno() . ": " . mysql_error(). "\n";
gibt nur ":" aus.
Hi!
» »» » ~~~php
» »» » var_dump($foo)
» »» »
> » »» Das gibt bool(false) aus.
> »
> » Wie sieht denn die Query aus? Test mal:
> » ~~~php
> » echo $query;
> »
Die query ist o.k., wenn ich sie mit c&p in phpmyadmin eingeben funktioniert sie.
Na gut;)
» Was sagt mysql_error?
echo mysql_errno() . ": " . mysql_error(). "\n";
gibt nur ":" aus.
Mhm, starten wir mal weiter oben: was ist mit
var_dump($db)
?
off:PP
Hi!
Nachtrag: wo und wie instanziierst Du $db?
off:PP
Hi!
Nachtrag: wo und wie instanziierst Du $db?
$db = @new mysqli('localhost', 'benutze', 'passwort', 'datenbank');
if (mysqli_connect_errno()) {
die ('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')');
}
Wenn ich mal ein fasches pw oder name angebe bekomme ich auch die Fehlemeldung
Hi,
Mhm, starten wir mal weiter oben: was ist mit
var_dump($db)
> ?
object(mysqli)#1 (0) { }
Hi!
» Mhm, starten wir mal weiter oben: was ist mit
»
» ~~~php
» var_dump($db)
»
> » ?
> object(mysqli)#1 (0) { }
Ok Du verwendest also die MySQL Improved Extension, dann solltest Du zum Abholen der Daten auch nicht mysql\_fetch\_array verwenden - ich weiß nicht, ob man die 'normalen' mySql-Funktionen und die improved Funktionen mischen kann - ich denke nicht.
Dein $result enthält also ein Result-Objekt - überprüfe es ruhig mal mit var\_dump - das wirst Du noch öfter brauchen;)
Du solltest dann zum 'abholen' eine der mysqli-result-fetch-methoden benutzen, z.B: [mysqli_result::fetch_array](http://de.php.net/manual/de/mysqli-result.fetch-array.php).
Wenn Du dann die gewünschten Ergebnisse erzielst, solltest Du dich bald um eine vernünftige Fehlerbehandlung kümmern.
off:PP
--
"You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
gibt nichts aus. Was mache ich falsch?
Versuchs mal mit echo $foo['COUNT(*)'];
$foo selbst wird höchstens ein Array beinhalten. Alternativ solltest du ggf. vielleicht mit COUNT(*) as summe arbeiten und dann $foo['summe']; ausgeben - aus Verständlichkeitsgründen.
»» gibt nichts aus. Was mache ich falsch?
Versuchs mal mit echo $foo['COUNT(*)'];
$foo selbst wird höchstens ein Array beinhalten. Alternativ solltest du ggf. vielleicht mit COUNT(*) as summe arbeiten und dann $foo['summe']; ausgeben - aus Verständlichkeitsgründen.
Dann geht gar nichts mehr. Das Programm bleibt an dieser Stelle stecken.
Hallo
ändere mal,
$query = "SELECT COUNT(*) FROM meineTabelle WHERE meinFeld='$meinWert'";
in
$query = "SELECT COUNT(*) AS Anzahl FROM meineTabelle WHERE meinFeld='$meinWert'";
und
echo "$foo";
in
echo $foo['Anzahl'];
viele Grüße
hawk
Hallo [...]
Das kommt mir doch recht bekannt vor :D
Hallo suit,
tja du hast recht.
Man sollte wohl doch vorher alle Antworten lesen, bevor man was schreibt :-)
sorry
viele Grüße
hawk
Hello,
ich möchte testen ob ein bestimmter Eintrag in einer MySQL DB schon existiert.
$query = "SELECT COUNT(*) FROM meineTabelle WHERE meinFeld='$meinWert'";
$result = $db->query($query);
$foo= mysql_fetch_array($result);
echo "$foo";gibt nichts aus. Was mache ich falsch?
Ohne Kenntnisse über die verwendete Datenbankklasse kann man eigentlich gar nichts dazu sagen.
Ich weiß jedenfalls bisher nicht, welches Ergebnis die Methode query() liefern soll.
Das könnte ein Multiarray sein, das könnte ein Objekt sein, oder alles andere.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg