SQLite foreach

SQLite foreach

am 05.10.2004 11:54:23 von Michael Sgier

Hallo
CODE:

$sql = "SELECT * FROM Chormitglieder_Stammdaten WHERE Name =" .
$_POST['Name'];
$rs=sqlite_query($GLOBALS['db'], $sql);
while($myrow=sqlite_fetch_array($rs)){
foreach($myrow as $key => $val ) {
echo "Feld <$key> hat den Wert $val
";


wenn ich nun nach einem Namen zb. Testuser suche bekomme ich:

Warning: sqlite_query() [function.sqlite-query]: no such column: Testuser in
C:\x...

Warning: sqlite_fetch_array() expects parameter 1 to be resource, boolean
given in...

Wenn ich als Kolonnenamen Name eingebe, bekomme ich alle Datensätze:

Feld <0> hat den Wert 1
Feld hat den Wert 1
Feld <1> hat den Wert test
Feld hat den Wert test
Feld <2> hat den Wert
Feld hat den Wert
Feld <3> hat den Wert
Feld hat den Wert
Feld <4> hat den Wert
Feld hat den Wert
Feld <5> hat den Wert
Feld hat den Wert
.....

Bei Eingabe von Vorname, Strasse etc. allerdings keinen Output. Ich sollte
entweder nach
Namen oder auch mit * alle Datensätze ausgeben können. Danke im voraus für
Hilfe.
MFG Michael

Re: SQLite foreach

am 05.10.2004 11:57:15 von Frank Schenk

Michael Sgier wrote:

> Hallo
> CODE:
>
> $sql = "SELECT * FROM Chormitglieder_Stammdaten WHERE Name =" .
> $_POST['Name'];
....
> wenn ich nun nach einem Namen zb. Testuser suche bekomme ich:
>
> Warning: sqlite_query() [function.sqlite-query]: no such column: Testuser in
> C:\x...

Hallo Michael,

Werte - auf jeden Fall Strings - musst du in Queries in Hochkommata
einschliessen, damit sie nicht für Feldnamen gehalten werden (Nichts
anderes sagt die Fehlermeldung).

Also z.B.:

$query = sprintf("select name,adresse,plz, ort from
Chormitglieder_Stammdaten where
Name='%s'",mysql_real_escape_string($_POST['Name']));

Desweiteren hast du keinerlei Fehlerbehandlung eingebaut (war das Öffnen
der DB erfolgreich, enthält myrow überhaupt ein Array etc.)


Gruss, Frank

Re: SQLite foreach

am 05.10.2004 22:57:16 von Michael Sgier

Hallo Frank
also nun hast du mich recht durcheinander gebracht. Trotzdem nach
mehreren Versuchen bin ich der Meinung, dass meine Syntax OK ist
bis auf, wie schon meine Frage war, das ganze Foreach Konstrukt.
Wenn ich Name eingebe, siehe voriges Mail unten, bekomme ich die
gespeicherten Felder in der Tabelle Chormitglieder_Stammdaten. Wenn ich
aber zb. Vorname eingebe kommt keine Ausgabe. Kann mir das jemand
erklären??? Vielen Dank. Andererseits bei deiner Syntax in Hochkommas
meldet der dass die Tabelle nicht existieren soll...wie gesagt hat
mich zur Verzweiflung getrieben und bin nun der Ansicht, dass das
OK sein sollte ohne Hochkomma.
Vielen Dank und Grüsse
Michael

Re: SQLite foreach

am 06.10.2004 00:10:32 von Niels Braczek

Michael Sgier schrieb:

> also nun hast du mich recht durcheinander gebracht. Trotzdem nach
> mehreren Versuchen bin ich der Meinung, dass meine Syntax OK ist
> bis auf, wie schon meine Frage war, das ganze Foreach Konstrukt.
> Wenn ich Name eingebe, siehe voriges Mail unten, bekomme ich die
> gespeicherten Felder in der Tabelle Chormitglieder_Stammdaten.
> Wenn ich aber zb. Vorname eingebe kommt keine Ausgabe. Kann mir
> das jemand erklären??? Vielen Dank. Andererseits bei deiner Syntax
> in Hochkommas meldet der dass die Tabelle nicht existieren
> soll...wie gesagt hat mich zur Verzweiflung getrieben und bin nun
> der Ansicht, dass das OK sein sollte ohne Hochkomma.

Da liegst du falsch.
Deine Query lautet (gib sie mit echo() zur Bestätigung aus):

SELECT * FROM Chormitglieder_Stammdaten WHERE Name = Testuser

In der WHERE-Clause werden hier zwei Spalten verglichen: Name und
Testuser. Die Spalte Testuser existiert aber nicht. Das besagt die
Meldung. Korrekt wäre

SELECT * FROM Chormitglieder_Stammdaten WHERE Name = 'Testuser'

wie dir Frank schon mitgeteilt hat.

MfG
Niels

--
IcH fInDe AuCh, dAsS eS nIcHt So WiChTig IsT, eInEn TeXt In KoRrEcKtEr
gRoSs- Und KlEiNsChReIbUnG zU vErFaSsEn, Da DiEs DeR LeSbArKeIt KaUm
AbBrUcH tUt UnD zUdEm AuSdRuCk MeInEr InDiViDuAlItAeT iSt.
[Joachim Kromm in dsnu]