wie üblich, wird aus einer Mücke wieder mal der ganze Serengeti-Tierpark nachgebildet.
mein Join sieht eigentlich gut aus, aber
Einklappen
X
-
.....echo 'von Artikel: '.$_GET['id']; werd's mir merken!
aber vielleicht liegt hier der Hund begraben: (wieder nach Stunden)
hiermit übergebe ich doch eine GET-Variable, die auch unten mit "15" ausgewiesen wird.
PHP-Code:echo" <td><a href='allelieferanten.php?id=$id'>Lieferanten</a></td>\n";
denn folgende mysql-abfrage (natürlich ohne $_GET['id'])
klappt mit verschiedenen Kontrollen im phpmyadmin.
SELECT lieferanten.Lieferantenname
FROM lieferanten, artikel, artikellieferantenlookup
WHERE artikel.ID = "33"
AND AID = artikel.ID
AND LID = lieferanten.ID
LIMIT 0 , 30
aber:
echo 'von Artikel: '.$_GET['id'];
$select = 'SELECT lieferanten.Lieferantenname';
$from = 'FROM lieferanten, artikel, artikellieferantenlookup';
$where = " WHERE artikel.ID = '" . mysql_real_escape_string($_GET['id']). "'
AND AID = artikel.ID AND LID = lieferanten.ID ";
kommt die Fehlermeldung:
von Artikel: 15 WHERE artikel.ID = '15' AND AID = artikel.ID AND LID = lieferanten.ID
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version
for the right syntax to use near 'WHERE artikel.ID = '15' AND AID = artikel.ID AND LID = lieferanten.I' at line 1
Zuletzt geändert von pepsi; 22.07.2006, 16:33.
Kommentar
-
Der Fehler ist unmittelbar links von der von mysql_error() angegebenen Stelle.
Ich spekuliere mal, dass es keine Tabelle artikellieferantenlookup gibt, aber schaue nochmal (kann nicht während schreiben), oder du hast die queryteile nicht zusammengehängt.
PS: Und das oberhalb von Error: waren deine echo-Ausgaben. es sieht soweit gut aus.
edit: früher hiess es $from = ' FROM lieferanten, lookup, artikel';
jetzt heisst es: $from = 'FROM lieferanten, artikel, artikellieferantenlookup';
Das ist doch easy..
>>>>>>und im $from fehlt jetzt ein Leerzeichen am Anfang, aber dann hätte mysql_error() schon diese Stelle gemeldet.
Zuletzt geändert von heiss; 22.07.2006, 16:48.
Kommentar
-
danke erstmal an "alle"
ich poste hiermit: den versuchten query: (ohne
PHP-Code:?>
<table>
<tr><th>ein oder mehrerer Lieferanten:</th><th></th></tr>
<?php
$lieferant =mysql_query ( $select . $from . $where);
if (!$lieferant) {
echo '</table>';
exit('<p>Fehler bei der Abfrage der Lieferanten!<br/ >'.
'Error: ' . mysql_error() . '</p>');
}
while ($lief = mysql_fetch_array($lieferanten)) {
echo "<tr valign='top'>\n";
$id = $lief['ID'];
$lieferantenname = htmlspecialchars($lief['Lieferantenname']);
echo "<td>$lieferantenname</td>\n";
echo "</tr>\n";
}
?>
Kommentar
-
Was wird da
$lieferant =mysql_query ( $select . $from . $where);
wirklich an die Datenbank geliefert?!
(echo $select.$from.$where; zum Beispiel...)
Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!
bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
Wie man Fragen richtig stellt
Kommentar
-
*omg*
Fangen wir für dich mal ganz bei 0 an.
da du mit SQL nichts anfangen kannst, versuche ich anhand eines PHP-Codes zu erklären:
<?
mysql_query('SELECT * FROM TABLE WHERE id > 20');
?>
Dieser Code sorgt dafür, dass alle Datensätze mit der ID größer 20 "aus der DB geholt" werden.
Wenn jetzt jemand nach der Query (=Anfrage) fragt, die an die DB gesendet wird, würde er als antwot "Die Query lautet 'ELECT * FROM TABLE WHERE id > 20'. erhalten.
Meinst du, du kannst uns jetzt eine vernüftige Antwort auf unsere Frage geben.
Wie lautet die Query, die du an die Datenbank sendest?
Kommentar
-
wenn ich echo $select usw. eingebe
(in meiner PHP-Datei nicht wahr?)
dann erhalte ich z.Bsp.
SELECT lieferanten.LieferantennameFROM lieferanten,
artikel, artikellieferantenlookup WHERE artikel.ID = '8'
AND AID = artikel.ID AND LID = lieferanten.ID
Kommentar
-
von Artikel: 8 SELECT lieferanten.Lieferantenname FROM lieferanten,
artikel, artikellieferantenlookup WHERE artikel.ID = '8'
AND AID = artikel.ID AND LID = lieferanten.ID
Notice: Undefined variable: lieferanten in C:\Programme\xampp\htdocs\home\
allelieferanten.php on line 49
Ich gehe wohl noch einmal die "lieferanten-Variablen durch"?
Kommentar
Kommentar