WinFuture-Forum.de: Mysql & Php: Incorrect Table Name - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Mysql & Php: Incorrect Table Name


#1 Mitglied ist offline   Stefan24 

  • Gruppe: aktive Mitglieder
  • Beiträge: 151
  • Beigetreten: 17. Februar 07
  • Reputation: 0
  • Geschlecht:Männlich

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?

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());
}

Eingefügtes Bild

Eingefügtes Bild
0

Anzeige



#2 Mitglied ist offline   zwutz 

  • Gruppe: aktive Mitglieder
  • Beiträge: 659
  • Beigetreten: 17. Juli 07
  • Reputation: 1
  • Geschlecht:Männlich

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
0

#3 Mitglied ist offline   Stefan24 

  • Gruppe: aktive Mitglieder
  • Beiträge: 151
  • Beigetreten: 17. Februar 07
  • Reputation: 0
  • Geschlecht:Männlich

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.
Eingefügtes Bild

Eingefügtes Bild
0

#4 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.947
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

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
0

#5 Mitglied ist offline   Stefan24 

  • Gruppe: aktive Mitglieder
  • Beiträge: 151
  • Beigetreten: 17. Februar 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 01. Juni 2010 - 10:46

Die POST Variable habe ich leer gelassen, daraufhin wird folgender Query erzeugt:

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 ''
Eingefügtes Bild

Eingefügtes Bild
0

#6 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.947
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 01. Juni 2010 - 10:53

Das Statement ist korrekt, allerdings bezieht sich deine Fehlermeldung auf ein anderes Statement

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']);
}

0

#7 Mitglied ist offline   Stefan24 

  • Gruppe: aktive Mitglieder
  • Beiträge: 151
  • Beigetreten: 17. Februar 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 01. Juni 2010 - 11:01

Habe das nun so:

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

Eingefügtes Bild

Eingefügtes Bild
0

#8 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.947
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

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'])) { ...

0

#9 Mitglied ist offline   Stefan24 

  • Gruppe: aktive Mitglieder
  • Beiträge: 151
  • Beigetreten: 17. Februar 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 01. Juni 2010 - 11:13

Klappt ;) Vielen Dank :(

Dieser Beitrag wurde von Stefan24 bearbeitet: 01. Juni 2010 - 11:13

Eingefügtes Bild

Eingefügtes Bild
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0