include("mysql_connect.php"); if ($_POST['nr'] != "") { $snr = $_POST['nr']; } else { $snr = "TEMP".rand(1000,9999); echo $snr; } $query = " CREATE TABLE `".$snr."` ( `id` INT(10) NOT NULL AUTO_INCREMENT, `nr` VARCHAR(100) NULL, `typ` VARCHAR(100) NULL, `name` VARCHAR(100) NULL, `vorname` VARCHAR(100) NULL, `firma` VARCHAR(100) NULL, `anrede` VARCHAR(100) NULL, `adresse_typ` VARCHAR(100) NULL, `adresse_strasse` VARCHAR(100) NULL, `adresse_plz` VARCHAR(100) NULL, `adresse_ort` VARCHAR(100) NULL, `geb` VARCHAR(100) NULL, `geb_name` VARCHAR(100) NULL, `telefon_nr` VARCHAR(100) NULL, `telefon_typ` VARCHAR(100) NULL, `telefon_name` VARCHAR(100) NULL, `fax_nr` VARCHAR(100) NULL, `fax_typ` VARCHAR(100) NULL, `fax_name` VARCHAR(100) NULL, `email` VARCHAR(100) NULL, `email_name` VARCHAR(100) NULL, `homepage` VARCHAR(100) NULL, `checkbox` VARCHAR(100) NULL, PRIMARY KEY (`id`) ) COLLATE='latin1_swedish_ci' ENGINE=MyISAM ROW_FORMAT=DEFAULT AUTO_INCREMENT=1 "; $result = mysql_query($query); if (!$result) { die('Invalid query: ' . mysql_error()); }
Seite 1 von 1
Mysql & Php: Incorrect Table Name
#1
geschrieben 01. Juni 2010 - 10:02
Dieses PHP Script treibt mich noch in den Wahnsinn... Ich bekomme immer eine Fehlermeldung. Weiss jemand von euch warum?
Anzeige
#2
geschrieben 01. Juni 2010 - 10:15
$snr dürfte bei der Verwendung leer sein, weil es mit Ende des if-Blocks seine Gültigkeit verliert
Raise your glass if you are wrong
#3
geschrieben 01. Juni 2010 - 10:41
Der Fehler lässt darauf schließen, das $snr leer ist, allerdings tritt der Fehler nur auf, wenn $_POST['nr'] leer ist. Und wenn $_POST['nr'] nicht leer ist, wird es ja auch in $snr übertragen, aber es klappt.
#4
geschrieben 01. Juni 2010 - 10:42
@zwutz, wir reden hier von PHP und nicht von ordentlichen Programmiersprachen. $snr ist in PHP auch außerhalb gültig.
@Stefan24 Gib $query vorher mal aus und poste ihn hier. Meine Vermutung ist dass $_POST['nr'] ungültige Zeichen enthält. Im übrigen: http://de.wikipedia....L-Injection#PHP
@Stefan24 Gib $query vorher mal aus und poste ihn hier. Meine Vermutung ist dass $_POST['nr'] ungültige Zeichen enthält. Im übrigen: http://de.wikipedia....L-Injection#PHP
#5
geschrieben 01. Juni 2010 - 10:46
Die POST Variable habe ich leer gelassen, daraufhin wird folgender Query erzeugt:
Invalid query: Incorrect table name ''
CREATE TABLE `TEMP2315` ( `id` INT(10) NOT NULL AUTO_INCREMENT, `nr` VARCHAR(100) NULL, `typ` VARCHAR(100) NULL, `name` VARCHAR(100) NULL, `vorname` VARCHAR(100) NULL, `firma` VARCHAR(100) NULL, `anrede` VARCHAR(100) NULL, `adresse_typ` VARCHAR(100) NULL, `adresse_strasse` VARCHAR(100) NULL, `adresse_plz` VARCHAR(100) NULL, `adresse_ort` VARCHAR(100) NULL, `geb` VARCHAR(100) NULL, `geb_name` VARCHAR(100) NULL, `telefon_nr` VARCHAR(100) NULL, `telefon_typ` VARCHAR(100) NULL, `telefon_name` VARCHAR(100) NULL, `fax_nr` VARCHAR(100) NULL, `fax_typ` VARCHAR(100) NULL, `fax_name` VARCHAR(100) NULL, `email` VARCHAR(100) NULL, `email_name` VARCHAR(100) NULL, `homepage` VARCHAR(100) NULL, `checkbox` VARCHAR(100) NULL, PRIMARY KEY (`id`) ) COLLATE='latin1_swedish_ci' ENGINE=MyISAM ROW_FORMAT=DEFAULT AUTO_INCREMENT=1
Invalid query: Incorrect table name ''
#6
geschrieben 01. Juni 2010 - 10:53
Das Statement ist korrekt, allerdings bezieht sich deine Fehlermeldung auf ein anderes Statement
$snr= '', $snr ist somit leer.
Prüfe die Variable daher so:
Zitat
Incorrect table name ''
$snr= '', $snr ist somit leer.
Prüfe die Variable daher so:
if (!empty($_POST['nr'])) { $snr = mysql_real_escape_string($_POST['nr']); }
#7
geschrieben 01. Juni 2010 - 11:01
Habe das nun so:
Aber noch immer das gleiche Problem wie vorher. Ist POST leer gibts nen Fehler, ist POST nicht leer, klappts.
if (!empty($_POST['nr'])) { $snr = mysql_real_escape_string($_POST['nr']); } else { $snr = mysql_real_escape_string("TEMP".rand(1000,9999)); }
Aber noch immer das gleiche Problem wie vorher. Ist POST leer gibts nen Fehler, ist POST nicht leer, klappts.
Dieser Beitrag wurde von Stefan24 bearbeitet: 01. Juni 2010 - 11:02
#8
geschrieben 01. Juni 2010 - 11:10
Ach...man sollte auch prüfen, ob die Variable überhaupt gesetzt ist.
if (isset($_POST['nr']) && !empty($_POST['nr'])) { ...
#9
geschrieben 01. Juni 2010 - 11:13
Klappt Vielen Dank
Dieser Beitrag wurde von Stefan24 bearbeitet: 01. Juni 2010 - 11:13
- ← Bash Script / Linux
- Skript/Web-Programmierung
- [mysql & Php] Mysql Datensätze Spaltenweise Speichern →
Thema verteilen:
Seite 1 von 1