2016-04-20 15 views
0

ich zur Zeit mit dieser arbeite:Mehrere Variablen als Tabellenname

$sql="INSERT INTO $tables(serial,date,type,file,size) VALUES('$serial','$date','$test','$final_file','$new_size')"; 
     mysql_query($sql); 

Wo $ Tabellen eine Sigle variabel ist. Ich muss jetzt $ tables durch Namen wie "sam_coll" ersetzen, indem ich zwei verschiedene Variablen wie $ device und $ test wie folgt verwende;

$sql="INSERT INTO $device_$test(serial,date,type,file,size) VALUES('$serial','$date','$prova','$final_file','$new_size')"; 

Die Seite gibt mir dann "unerwartet '_' (T_STRING)". Wie muss der Tabellenname geschrieben werden?

+0

Sie können nicht Vars für Tabellenname Sie müssen den Tabellennamen verwenden direkt – scaisEdge

+0

Aber ich bin in der Lage, zu verschiedenen Tabellen mit einer einzigen Variablen zu verbinden, was ist der Unterschied? Ist der Unterstrich ein Problem mit mysql? – sfasas

+1

@scaisEdge er kann Variablen als Tabellenname verwenden, weil er eine Zeichenkette erstellt, wenn er versucht, einen Tabellennamen wie diesen zu erstellen, aber mit vorbereiteten Statement, dann kann er das nicht tun. Ich denke, Problem ist trivial mit nicht deklarierten Variablen, sfasas nach Build $ sql print es auf dem Bildschirm und sterben Skript um zu sehen, was Build –

Antwort

0

Obwohl viele Überlegungen, können Sie Zeichenketten wie diese verketten:

$sql="INSERT INTO ".$device."_".$test."(serial,date,type,file,size) VALUES('$serial','$date','$prova','$final_file','$new_size')"; 
0

Normalerweise verwende ich die Verkettung Methode für Abfragen wie das Gebäude, weil es mir leichter zu lesen ist:

$sql="INSERT INTO " . $device . "_" . $test . "(serial,date,type,file,size) VALUES('" . $serial . "','" . $date','" . $prova . "','" . $final_file . "','" . $new_size . "')"; 

Sie könnten aber auch geschweifte Klammern um die Variable legen.

0

Vielen Dank! Ich war für eine Stunde auf diesem .. (Ich lerne PHP für ein Projekt, das wir bei der Arbeit tun, so dass ich nicht viele Dinge weiß)