$call funktioniert nicht bei einem INSERT

xmal

Grünschnabel
Hallo und guten Tag,

mein erster Beitrag soll gleich eine Frage sein. Nachdem ich eine halbe Stunde Fehlersuche betrieben habe, musste ich feststellen, dass Folgendes nicht funktioniert

PHP:
$query = "INSERT INTO transfer (cstk, call) VALUES ('$cstk','$call')";
$result = mysql_query($query);

Es liegt an call, bzw $call. Da man ja bekanntlich aus Fehlern lernt (bzw. sollte ;) ) interessiert mich jetzt: WIeso ist das so?
 
Also die Anweisung sieht gut aus. Wenn es nicht klappt wird doch bestimmt ein Fehler ausgegeben!!
 
So, ich wieder.

Erstmal ein dickes Entschuldigung:
Der Eintrag in die Datenbank klappt nicht, es kommt aber keine Fehlermeldung (ich habe Fehlermeldungen nicht unterdrückt). Wenn ich $call und call rausnehme, funktioniert alles tadellos. Das hätte ich noch dazu schreiben müssen.


PHP:
$query = "INSERT INTO transfer (cstk, call) VALUES ('$cstk','$call')";
$result = mysql_query($query); 
echo $cstk
echo $call;
echo $query;
----------------------------------------------------------------
1
20
INSERT INTO transfer (typ, item, stk, cstk, call, loc, timestamp) VALUES ('1','20')

Das sind die Ergebnisse von echo.
 
$query = "INSERT INTO transfer (cstk, call) VALUES ('$cstk','$call')";

INSERT INTO transfer (typ, item, stk, cstk, call, loc, timestamp) VALUES ('1','20')

Ich verstehe da was nicht. Wie kann das das "echo" von $query sein?

Und wenn die Anweisung wirklich alle die Feldnamen enthält, dann musst du die Werte dafür auch angeben.
 
Zuletzt bearbeitet:
Moin,

evl irre ich mich, aber müssen die Spalten Namen nicht in `` gepackt werden?

$query = "INSERT INTO transfer (`cstk`, `call`) VALUES ('$cstk','$call')";

Zumindest funktioniert es so bei mir, wenn ich mich jetzt nicht ganz irre, wenn doch dann haut mich *g*

Überings kannst du dir die 2te spalte saaren, ist bei mehreren abfragen in einer datei sehr hilfreich finde ich:
$query = mysql_query("INSERT INTO transfer (cstk, call) VALUES ('$cstk','$call')");

Edit:

@tombe

er ruft echo query ab, und nicht den mysql_query.
Were genau so:
$query = "Ja hallo und so";
echo $query;
 
@DJCueForce

Was willst du mir damit sagen das er $query aufruft. Er übergibt an die Variable $query folgendes:

PHP:
$query = "INSERT INTO transfer (cstk, call) VALUES ('$cstk','$call')";

Wenn ich nun:

PHP:
echo $query;

angebe, so muss das rauskommen was der Variablen zugewiesen wurde und da steht nichts von den restlichen Feldnamen!!!
 
Haha, ja da bin ich doch glatt auf mich selbst reingefallen - DJCueForce hatte recht.
Jedoch, kommt bei einem echo $result überhaupt nichts. Bei der funktionierenden Version kommt der Wert 1 zurück.
Bei einem error_reporting(E_ALL); kommt übrigens auch kein Fehler.
Per Hand kann ich den Query in phpmyadmin übrigens problemlos eingeben
---
@yaslaw
Erstmal danke für den Link
@DJCueForce
Nein muss es nicht - ich habe einfach überall "call" durch "alles" ersetzt und es funktioniert.



Abschließend will ich nochmal kurz betonen, dass ich weiß, wie man ein INSERT setzt, wie die Syntax aussehen soll etc. Ein blutiger Anfänger bin ich nicht. Deswegen habe ich zum Einen so lange gebraucht um heute meinen Fehler zu finden (weil ich sicher war, dass alles richtig geschrieben wurde) und zum Anderen will ich deswegen unbedingt wissen, warum es so ist, wie es ist. Ich hoffe wir packen das zusammen.
 
Zuletzt bearbeitet:
@xmal
Du solltest auch keinen echo $result; machen, sondern ein echo $query.
Da steht auch so in meinem Link iunter Lösung, Punkt 2 http://wiki.yaslaw.info/wikka/PhpDebugMySqlQueries#QueryStringtesten

Aber solange du unsere Fragen nicht beantwortest, ist es müssug von uns Lösungen zu erwarten, denn unsere Fragen sind da um dir bei der Lösungsfindung zu helfen und nicht einfach weil wir gerne fragen.
Bringe diese Echos und wir sehen mehr. Was du bis jetzt presentiert hast, sind die Ausgaben von Echos deren Code wir wiederum nicht sehen.

PHP:
$query = "INSERT INTO transfer (cstk, call) VALUES ('$cstk','$call')";
$result = mysql_query($query); 
echo $cstk
echo $call;
echo $query;
----------------------------------------------------------------
1
20
INSERT INTO transfer (typ, item, stk, cstk, call, loc, timestamp) VALUES ('1','20')
Das kann nicht sein. typ, item, stk, loc, timestamp sind nicht in deinem String definiert. Woher kommen diese?

Und du verstehst was von SQL. Dann sag mir bitte, wie dieses INSERT mit 7 Feldern und nur 2 Werten funktioniert. Ich weiss es nicht und das nach 15 Jahre SQL-Erfahrung (davon 7 Jahre MySQL und PHP). Ich lerne gerne dazu.
 
Zuletzt bearbeitet:
Ich wollte mich eigentlich raushalten da scheinbar eh nicht das gelesen wird was man schreibt, aber eines muss ich noch los werden.

@yaslaw: Danke !! Genau das habe ich nämlich oben auch geschrieben.
 
Zurück