sql Abfrage mit variablen

Hallo gruebel-gruebel,

du hast hier im Augenblick kein SQL-Problem, sondern ein php-Probelm.

Der Fehler liegt hier.
PHP:
$var = “AND bm_datenbank.jahr = ’.$jahr.’";
Immer aufpassen, mit den Anführungszeichen!
PHP:
$var = "AND bm_datenbank.jahr = ’.$jahr.’";
 
Hallo Bernd,

PHP:
echo $var1 = "AND bm_datenbank.jahr = '.$jahr.'";

steht im sript die etwas komischen "" sind von Word da ich den Text dort geschrieben habe.
Es wird auch angenommen und auch ausgegeben. Ausgabe:
AND bm_datenbank.jahr = '.1979.'

MFG
 
An kuddeldaddeldu,

ich ignoriere nichts, bin über jede Hilfe froh, ich sage dir was „ ich kein Englisch“ nur einpaar Brocken. Habe habe
OR die(mysql_error())
"; in das query gesetzt und folgenden Fehler erhalten
Fehler 1 : ist zuständig für die Blätterfunktion
Warning: mysql_num_rows():
Fehler 2 : ist zuständig für die Ausgabe der Artikel.
Warning: mysql_fetch_assoc():

Es liegt nicht am blättern oder Artikelanzeige diese funktionieren perfekt.
 
Hi,

ich ignoriere nichts, bin über jede Hilfe froh, ich sage dir was „ ich kein Englisch“ nur einpaar Brocken.

Ich schreibe doch auf deutsch :confused:
Oder meinst Du jetzt wirklich "Highlighting"? Wie wär's dann mal mit nachfragen, was das heisst? Wie soll ich das ahnen?
Highlighting ist die farbliche Hinterlegung des Codes. So kann man sofort Variablen, Funktionen, Strings etc. erkennen und damit auch gleich evtl. Syntaxfehler.

Die Fehlermeldungen da sind nicht komplett, aber lass mal, "not a valid result resource", richtig? Was bedeutet, die Abfrage ist fehlgeschlagen. Das heißt, mysql_error() dürfte auch was zu erzählen gehabt haben. Warum postest Du das nicht?

LG
 
ich habe mir das query ausgegeben.

Es steht genau dass im dem query mit der $var wie mit AND.
Er übernimmt das sql query und schickt es an die DB.

mfg
 
Natürlich schreibst du auf deutsch es sind nur die englischen Wörter nicht alle aber ein paar die ich immer wieder Nachschlagen muss.
Das Original: so habe ich es im script stehen.
PHP:
$jahr = 1979;
$var1 = "AND bm_datenbank.jahr = '.$jahr.'";
$var2 = "GROUP BY bm_zus.vers_id";
$sql="SELECT
            bm_datenbank.bm_bez1,
            bm_datenbank.minr,
            bm_datenbank.bm_id,
            bm_versionen.vers_id,
            bm_versionen.art_nr,
            bm_versionen.t_preis,
            bm_versionen.bild_a,
            bm_versionen.bm_id,
            bm_datenbank.zugehoer,
            bm_kat.bm_kat,
            bm_zus.vers_id,
            bm_zus.bm_zs
       FROM
            bm_datenbank,
            bm_versionen,
            bm_kat,
            bm_zus
       WHERE
            bm_datenbank.bm_id = bm_versionen.bm_id
       AND
            bm_versionen.vers_id = bm_zus.vers_id
       AND
            bm_versionen.bm_id = bm_kat.bm_id
       AND
            bm_kat.bm_kat = ".$menu1."
       AND
            left(bm_datenbank.jahr,3) = ".$jz."
       AND
            bm_zus.bm_zs = ".$zs."
OR die(mysql_error())
";
            $sql .= $var1;
            $sql .= $var2;
}
echo $sql;

Ausgabe $sql:

SELECT bm_datenbank.bm_bez1, bm_datenbank.minr, bm_datenbank.bm_id, bm_versionen.vers_id, bm_versionen.art_nr, bm_versionen.t_preis, bm_versionen.bild_a, bm_versionen.bm_id, bm_datenbank.zugehoer, bm_kat.bm_kat, bm_zus.vers_id, bm_zus.bm_zs FROM bm_datenbank, bm_versionen, bm_kat, bm_zus WHERE bm_datenbank.bm_id = bm_versionen.bm_id AND bm_versionen.vers_id = bm_zus.vers_id AND bm_versionen.bm_id = bm_kat.bm_id AND bm_kat.bm_kat = 218 AND left(bm_datenbank.jahr,3) = 196 AND bm_zus.bm_zs = 2 OR die(mysql_error()) AND bm_datenbank.jahr = '.1979.'GROUP BY bm_zus.vers_id

Fehleranzeige
Fürs Blättern:
Warning: mysql_num_rows():

Fürs anzeigen der Artikel:
Warning: mysql_fetch_assoc
 
Hallo gruebel-gruebel,

ok, jetzt hast du hier ein SQL-Problem.

lass mal das "GROUP BY bm_zus.vers_id" weg.
Bzw.
PHP:
$sql .= $var2;
Du kannst nicht einfach den SQL um ein "Group by" erweitern, dazu muss du zumindest im Group by-Teil alle zu gruppierenden Felder angeben bzw. eine andere Funktion (z.B. Sum()) im Select-Teil benutzen.
 
Ich habe mehrere verschiedene query`s ($sql) um Waren anzuzeigen.
Ich möchte aber nur 1 $sql query für alle Abfragen.

Wenn ich das so in eine variable packe $var = AND bm_datenbank.jahr = ’.$jahr.’;
Wie muss ich die $var in das query eintragen.

Gruß
grübel grübel

das ist einfach zu lösen:

$jahr = 1958;
$var = "AND bm_datenbank.jahr = ’$jahr’";

$sql = "SELECT * FROM bm_datenbank, bm_versionen " .
"WHERE bm_datenbank.bm_id = bm_versionen.bm_id " .
$var;

das wars
solange der string in einem doppelten anführungszeichen ist, werden variablen geparst. Wenn dein $var-Inhalt stimmt, stimmt dann auch dein SQL - vorausgesetzt, $sql ist korrekt :-)
 
Hallo Sonic0815,

ich verstehe das nicht was du meinst. Habe doch nur den string in Hochkommas gelegt.
Was meinst du mit unterstichenem Hochkomma und Punkt im query.
$sql = "SELECT * FROM bm_datenbank, bm_versionen " .
"WHERE bm_datenbank.bm_id = bm_versionen.bm_id " .
$var;
 
Dies ist das query ab WHERE was perfekt funktioniert.
Du siehst AND
bm_datenbank.jahr = ".$jahr."
Ich wollte dieses Teil austauschen mit einer Variablen. Auch noch andere aber das später wenn dieses hier funktioniert. Das Group by hier funktioniert auch es wird alles angezeigt was es soll.

PHP:
$sql="SELECT
            ::::
       FROM
            :::::
       WHERE
            bm_datenbank.bm_id = bm_versionen.bm_id
       AND
            bm_versionen.vers_id = bm_zus.vers_id
       AND
            bm_versionen.bm_id = bm_kat.bm_id
       AND
            bm_kat.bm_kat = ".$menu1."
       AND
            bm_datenbank.jahr = ".$jahr."
       AND
            left(bm_datenbank.jahr,3) = ".$jz."
       AND
            bm_zus.bm_zs = ".$zs."
       GROUP BY
            bm_zus.vers_id
";
}

query mit $var

PHP:
$jahr = 1979;
$var1 = "AND bm_datenbank.jahr = '.$jahr.'";
$var2 = "GROUP BY bm_zus.vers_id";
$sql="SELECT
            ::::
       FROM
            :::::
       WHERE
            bm_datenbank.bm_id = bm_versionen.bm_id
       AND
            bm_versionen.vers_id = bm_zus.vers_id
       AND
            bm_versionen.bm_id = bm_kat.bm_id
       AND
            bm_kat.bm_kat = ".$menu1."
       AND
            left(bm_datenbank.jahr,3) = ".$jz."
       AND
            bm_zus.bm_zs = ".$zs."

OR die(mysql_error())
";
            $sql .= $var1;
}
Das funktioniert auch nicht.
 
Zurück