PHP + MySQL

mgraf

Erfahrenes Mitglied
Hallo,
ich habe gleich mehrere Fragen:
Zugegebenerweise hatte ich immer schon Probleme mit den Anführungszeichen in PHP, jetzt besonders. Normalerweise verwende ich immer die einfachen Apostrophe '.
Ok, Problem 1:
ich habe einige Variablen mittels define() definiert funktioniert wunderbar, nur sobald ich eine dieser Variablen in eine MySQL Abfrage einbaue wirft MySQL Fehler aus:
PHP:
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 'SET changedcol = 'attendance', ' at line 1
So sieht meine Abfrage aus:
PHP:
define('tbluserchange', 'einladung_tester_changes');
$insert = "INSERT INTO $tbluserchange SET changedcol  = '$affectedcol',
                                                      oldvalue    = '$old',
                                                      newvalue    = '$new',
                                                      changedtime = NOW(),
                                                      unique_code = '$hash'";
  $insertquery = mysql_query($insert) or die (mysql_error());
Die anderen Werte kommen aus einer der Funktion...


----------------

Die 2te Frage:
Wie kann ich die Nummer meiner DB Spalte auslesen?
+---A---|---B---|---C---+
| ab | cd | ef |
| gh | ij | kl |
+-------------------------+

Ich brauche also eine Art Äquivalent zu "mysql_affected_rows" - ansonsten müsste ich immer den Tabellennamen auslesen und übergeben, kann man das vermeiden? Und dann natürlich wieder zurückwandeln bei einer neuen MySQL Abfrage..

Der Hintergrund: Ich baue an einer kleinen History, dabei lese ich den aktuellen Wert der angegebenen Spalte zB. 2 also B aus WHERE id=2 gleichzeitig speichere ich den Wert in eine 2te Tabelle und ich möchte vermeiden, dass ich die Spaltennamen verwende, denn die könnten sich ja ändern..

Hoffe man versteht auch was ich will?

lg
michi
 
Zuletzt bearbeitet:
zu 1.

PHP:
define('TBLUSERCHANGE', 'einladung_tester_changes');
$insert = "INSERT INTO ".TBLUSERCHANGE." SET changedcol  = '$affectedcol',
                                                      oldvalue    = '$old',
                                                      newvalue    = '$new',
                                                      changedtime = NOW(),
                                                      unique_code = '$hash'";
  $insertquery = mysql_query($insert) or die (mysql_error());
 
Hi,

mit http://php.net/define definierst du keine Variablen, sondern Konstanten! Die Verwendung von Konstanten gestaltet sich daher etwas anders. Zudem solltest du laut Codekonventionen Konstanten durchgängig groß schreiben:

PHP:
define('KONSTANTE', 'wert');
echo KONSTANTE;

Zur 2.Frage: Wieso sollten sich Spaltennamen ändern können? Was hat eine "History" mit den Spaltennamen zu tun? Welche Abhängikeit besteht dort für dich?
 
Danke, erstmal (define() is eh gross geschrieben, nur hier "Schlampigkeithalber" nicht ;-) )

Spaltennamen ändern, eigentlich nicht, nur mir ist nix besseres/sinnvolleres eingefallen.
Aber hauptsächlich, weil die Spaltennamen nicht in die Historytabelle passen, hier wurde von meinem Vorgänger eine SPalte "int(4)" angelegt, daher kann ich auch keine Namen eintragen...
 
Zurück