[PHP/MySQL] Query schlägt fehl?

bigtail

Ensign
Registriert
März 2003
Beiträge
159
Insert Into ??

Hi,
kann mir jemand erklären, warum das hier geht??


$result = mysql_query (" INSERT INTO kunden ( Vorname,Name,Email ) VALUES ( '".$_POST["vorname"]."','".$_POST["name"]."',''".$_POST["email"]."' ) ");



Aber das hier nicht??


$result = mysql_query (" INSERT INTO kunden ( Vorname,Name,Email ) VALUES ( $_POST['vorname'],$_POST['name'],$_POST['email'] ) ");


Danke
 
Re: Insert Into ??

hm es gibt ja 2 Unterschiede:
- beim einem werden die Variablen direkt in den String geschrieben, beim andern außerhalb
- zudem werden beim einen die Werte in Anführungszeichen geschrieben
ich nehm mal an, das ungültige Werte übergeben werden, da diese nicht in Anführungszeichen stehen

probier doch mal das aus:
$result = mysql_query (" INSERT INTO kunden ( Vorname,Name,Email ) VALUES ( '$_POST['vorname']','$_POST['name']','$_POST['email'] )' ");
 
Re: Insert Into ??

strings werden in SQL immer in singlequotes geschrieben
integers und SQL eigene Funktionen brauchen keine quotes
 
Re: Insert Into ??

Ok, dass die Strings in Hochkomms stehen müssen, geht klar.

Aber wozu dann noch die Anführungszeichen und vor allem wozu die Verbindungs-Punkte????
 
Re: Insert Into ??

kleines Beispiel:

PHP:
$var = 'schöner';
echo "Heute ist ein $var Tag.<br>";
echo 'Heute ist ein $var Tag.<br>';

als Ausgabe wirst du erhalten:

Heute ist ein schöner Tag.
Heute ist ein $var Tag.

Das PHP-Modul ersetzt in Strings, welche mit doppelten Anführungszeichen " gekennzeichnet sind, Variablen (zB $var) und Sonderzeichen (zB \n für Zeilenumbruch) durch ihren Wert. Bei einfachen Anführungszeichen ' geschieht dies nicht.

Durch den Punkt-Operator . werden Strings aneinander gefügt.
 
Re: Insert Into ??

bigtail schrieb:
Hi,
kann mir jemand erklären, warum das hier geht??


$result = mysql_query (" INSERT INTO kunden ( Vorname,Name,Email ) VALUES ( '".$_POST["vorname"]."','".$_POST["name"]."',''".$_POST["email"]."' ) ");



Aber das hier nicht??


$result = mysql_query (" INSERT INTO kunden ( Vorname,Name,Email ) VALUES ( $_POST['vorname'],$_POST['name'],$_POST['email'] ) ");


Danke



versuch das:

PHP:
$result = mysql_query (" INSERT INTO kunden ( Vorname,Name,Email ) VALUES ( $_POST[vorname],$_POST[name],$_POST[email] ) ");
 
Re: Insert Into ??

pcwTJaR schrieb:
versuch das:

PHP:
$result = mysql_query (" INSERT INTO kunden ( Vorname,Name,Email ) VALUES ( $_POST[vorname],$_POST[name],$_POST[email] ) ");
Alles, was keine Zahl ist, muss in einer Query in Anführungszeichen:
PHP:
$result = mysql_query (" INSERT INTO kunden ( Vorname,Name,Email ) VALUES ( '$_POST[vorname]', '$_POST[name]', '$_POST[email]' ) ");

Zudem darf man innerhalb eines Strings die Array-Keys nicht nochmal in Hochkommas einschließen, auch wenn außerhalb von Strings dadurch eine NOTICE-Meldung generiert würde. Das wäre falsch:
PHP:
$str = "Test $array['var1']";
Richtig:
PHP:
$str = "Test $array[var1]";
 
oder man macht es folgendermaßen:

PHP:
$query = mysql_query("INSERT INTO TABLE (...) VALUES ('{$_POST["string1"]}', '{$_POST["string2"]}', {$_POST["integer"]}, SQL_EIGENE_FUNKTION());");
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben