mysql_query, der 1. klappt, der 2. nicht.
boverter
- php
0 ChrisB0 boverter0 ChrisB0 Rouven0 Vinzenz Mai0 ChrisB0 boverter0 Vinzenz Mai
0 Vinzenz Mai
Hallo an alle,
folgendes Problem: Ich starte 2 mysql_query-Abfragen, die 1. ($result) wird mir korrekt angezeigt, die 2. ($result2) wird mir nicht angezeigt, also es kommt auch kein ressource ID# dabei heraus. Alle Tabellenfelder sind korrekt, die habe ich x-fach nachgelesen.
Sehe ich vor lauter Bäume den Wald nicht mehr?
$sql = "SELECT * FROM `naviuser` WHERE `p_id` = '$projektid' && `u_id` = '$_SESSION[userid]'";
$result = mysql_query ($sql);
while ($row=mysql_fetch_array($result))
{
$navi2 = $row['navi_id'];
$sgl2 = "SELECT * FROM `navigation` WHERE `naviid` = '$navi2'";
$result2 = mysql_query ($sql2);
$row2=mysql_fetch_array($result2);
$navtext = $row2['text'];
}
Vielleicht sieht ja einer von euch irgendwo einen versteckten Fehler. Danke für jeden Hinweis
-boverter-
Hi,
Vielleicht sieht ja einer von euch irgendwo einen versteckten Fehler.
MySQL "versteckt" keine Fehler - man muss es nur mit mysql_error() freundlich nach ihnen fragen.
MfG ChrisB
Hi,
Vielleicht sieht ja einer von euch irgendwo einen versteckten Fehler.
MySQL "versteckt" keine Fehler - man muss es nur mit mysql_error() freundlich nach ihnen fragen.
MfG ChrisB
Danke für den Hinweis, Fehlermeldung: Query was empty
Aber ich weiß einfach nicht warum. Die Tabelle 'navigation' existiert, die Spalte 'naviid' innerhalb der Tabelle auch. Die Variable $navi2 hat einen Wert der in der Spalte 'naviid' auch vorkommt.
Hi,
bitte zitiere vernuenftig.
Danke für den Hinweis, Fehlermeldung: Query was empty
Aber ich weiß einfach nicht warum. Die Tabelle 'navigation' existiert, die Spalte 'naviid' innerhalb der Tabelle auch. Die Variable $navi2 hat einen Wert der in der Spalte 'naviid' auch vorkommt.
Bei einer Query, die einfach nur kein Ergebnis lieferte, bekommst du durchaus eine Ressource-ID, und auch nicht diese Fehlermeldung.
Die Meldung besagt, dass du gar keine Query an die Datenbank uebergeben hast - also mysql_query "leer" aufgerufen hast.
Vermutlich ein Variablen-Schreibfehler - auf den dich PHP mittels error_reporting haette hinweisen koennen.
MfG ChrisB
Hello,
Vermutlich ein Variablen-Schreibfehler - auf den dich PHP mittels error_reporting haette hinweisen koennen.
jetzt wo du's sagst, man sieht ihn bis 7 Meilen bei Gegenwind...
MfG
Rouven
Hallo Rouven,
Vermutlich ein Variablen-Schreibfehler - auf den dich PHP mittels error_reporting haette hinweisen koennen.
jetzt wo du's sagst, man sieht ihn bis 7 Meilen bei Gegenwind...
sähe er sich die Quelle der Weisheit an, statt sich üblem Gegenwind auszusetzen, könnte er die Variable gar nicht falsch schreiben, weil sie gar nicht nötig wäre ...
Freundliche Grüße
Vinzenz
Hi,
Vermutlich ein Variablen-Schreibfehler - auf den dich PHP mittels error_reporting haette hinweisen koennen.
jetzt wo du's sagst, man sieht ihn bis 7 Meilen bei Gegenwind...sähe er sich die Quelle der Weisheit an, statt sich üblem Gegenwind auszusetzen, könnte er die Variable gar nicht falsch schreiben, weil sie gar nicht nötig wäre ...
Was aber grundsaetzlich natuerlich nichts daran aendert, dass er das error_reporting waehrend des Entwickelns unbedingt aktivieren sollte.
MfG ChrisB
Ich danke euch allen für eure Statements. Habe das 'g' mal durch ein 'q' ausgetauscht und stell mich erstmal dafür 10 Minuten in die Ecke.
Das errorr_reporting werde ich auch aktiv lassen und mit Joins werde ich mich ebenfalls beschäftigen.
DANKE an euch alle!
Gruß
-boverter-
Hallo Chris,
sähe er sich die Quelle der Weisheit an, statt sich üblem Gegenwind auszusetzen, könnte er die Variable gar nicht falsch schreiben, weil sie gar nicht nötig wäre ...
Was aber grundsaetzlich natuerlich nichts daran aendert, dass er das error_reporting waehrend des Entwickelns unbedingt aktivieren sollte.
auf jeden Fall, daran sollte es keinen Zweifel geben. display_errors auch nicht vergessen :-)
Freundliche Grüße
Vinzenz
PS: Wenn der OP seinen Code beibehält, muss er dennoch gegenwind gegen quelle eintauschen oder umgekehrt ...
Hallo,
folgendes Problem: Ich starte 2 mysql_query-Abfragen, die 1. ($result) wird mir korrekt angezeigt, die 2. ($result2) wird mir nicht angezeigt, also es kommt auch kein ressource ID# dabei heraus. Alle Tabellenfelder sind korrekt, die habe ich x-fach nachgelesen.
Sehe ich vor lauter Bäume den Wald nicht mehr?
Du möchtest statt PHP einen Join verwenden.
Lektüretipps:
Einführung in Joins
Fortgeschrittene Jointechniken
Schließlich baust Du einen simplen INNER JOIN aufwendig mit PHP und teuren Abfragen in einer Schleife nach. Das ist *keine* gute Idee - und fehlerträchtig, wie Du siehst :-)
Weiterhin ist es auch nicht gerade ressourcenschonend, sich die Inhalte aller Spalten einer Tabelle zurückgeben zu lassen, wenn man an einer einzigen interessiert ist.
$sql = "SELECT * FROM
naviuser
WHEREp\_id
= '$projektid' &&u\_id
= '$_SESSION[userid]'";
$result = mysql_query ($sql);
while ($row=mysql_fetch_array($result))
{
$navi2 = $row['navi_id'];
$sgl2 = "SELECT * FROMnavigation
WHEREnaviid
= '$navi2'";
$result2 = mysql_query ($sql2);
$row2=mysql_fetch_array($result2);
$navtext = $row2['text'];
}
Weiterhin verzichtest Du auf jegliche Kontextgemäße Behandlung und verläßt Dich somit entweder auf die unsäglichen Magic Quotes oder bist komplett für SQL-Injektion offen und gelegentlich kann es auch einfach nur zu einem Fehler kommen ...
SELECT
<spalten aus naviuser, die Du benötigst>
FROM
naviuser
INNER JOIN
navigation
ON
naviuser.navi_id = navigation.naviid -- Du bist inkonsequent.
WHERE
naviuser.p_id = <projektid>
AND
naviuser.u_id = <Session-Wert>
Die Werte aus Deinen PHP-Variablen solltest Du mit mysql_real_escape_string behandeln, da Du noch die veralteten mysql_*-Funktionen nutzt. Zum Zusammenbauen Deines Statements führt die Verwendung von sprintf() zu lesbarerem Code.
Näheres findest Du selbstverständlich massenhaft im Archiv, zum Beispiel in diesem Archivbeitrag von dedlfix mit vielen netten Links, die ich Dir sehr ans Herz lege.
Freundliche Grüße
Vinzenz