PHP变量作为表名mysqli

时间:2013-08-15 10:02:28

标签: php mysqli

我正在处理应该能够使用$variables来处理多个表的函数。

但是我收到语法错误..

有效的代码。

$query = "INSERT INTO table_com (tableID, komNAME, komDATE, komHTML, komSTATUS) 
VALUES ('$pID','$name','$time','$kom','$status')";
if(!$mysqli->query($query)) { die($mysqli->error); }    

和不

的代码
$sID = 'table':
$query = "INSERT INTO '$sID'_com ('$sID'ID, komNAME, komDATE, komHTML, komSTATUS) 
VALUES ('$pID','$name','$time','$kom','$status')";
if(!$mysqli->query($query)) { die($mysqli->error); }

只有表格和列$variables不起作用.. 这是my_sql_error:

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 ''diy'_com ('diy'ID, 
komNAME, komDATE, komHTML, komSTATUS) VALUES ('1','cjkm,','1' at line 1

有没有解决这个问题的方法?

3 个答案:

答案 0 :(得分:0)

更改

$query = "INSERT INTO '$sID'_com ('$sID'ID, komNAME, komDATE, komHTML, komSTATUS) 
VALUES ('$pID','$name','$time','$kom','$status')";

$query = "INSERT INTO `{$sID}_com` ({$sID}ID, komNAME, komDATE, komHTML, komSTATUS) 
VALUES ('$pID','$name','$time','$kom','$status')";

这种方式$sID将从_com单独解析。

我做了一个例子here

代码:

$sID = 'something';
echo "INSERT INTO `{$sID}_com` ({$sID}ID, komNAME, komDATE, komHTML, komSTATUS) 
    VALUES ('pID','name','time','kom','status')";

结果:

INSERT INTO `something_com` (somethingID, komNAME, komDATE, komHTML, komSTATUS) VALUES ('pID','name','time','kom','status')

请注意我为解析器删除了变量。

答案 1 :(得分:0)

您对数据库设计的想法是错误的。 $ sID应该是一个表中的字段,而不是表名。

请将您的多表设置重新设计为一个表,其中$ sID用于标识特定类别。它不会为你节省一天,而是几周的痛苦。

答案 2 :(得分:0)

检查脚本中是否有与问题中相同的错误:

$sID = 'table':
// Use a ; instead of a :