为什么不能将php变量用作mysql insert语句中的表名

时间:2012-02-06 05:32:50

标签: php mysql

在我的PHP脚本中,我试图在MySQL语句中使用变量名作为表名,但是当我使用变量作为表名时,如果没有使用`并且表示不正确的表名',则会给出语法错误'当'使用时。代码附在

下面
function toQuery($tblName){
   $t = "testtitle";
   $art = "testarticle";
   $auth = "testauthor";

       return "INSERT INTO `$tblName` VALUES ('$t', '$art', '$auth', null)";
}

mysql_connect("localhost","testuser","pass123");

mysql_query("Use `test_schema`");

if(mysql_query(toQuery("test_table"))){
    echo "Query: ".toQuery("test_table")." was run.";
}else{
    echo "Query: ".toQuery("test_table")." was not run. ".mysql_error();
}

当我使用变量$ tblName变量时,它回显一个相同的查询,如果我只是将test_table直接放在返回的查询中,但是查询中带有变量的那个执行正确。

2 个答案:

答案 0 :(得分:1)

你不使用mysql_select_db()。试试这个:

function toQuery($tblName){
   $t = "testtitle";
   $art = "testarticle";
   $auth = "testauthor";

       return "INSERT INTO `$tblName` VALUES ('$t', '$art', '$auth', null)";
}

mysql_connect("localhost","testuser","pass123");
mysql_select_db('dbname');
mysql_query("Use `test_schema`");

if(mysql_query(toQuery("test_table"))){
    echo "Query: ".toQuery("test_table")." was run.";
}else{
    echo "Query: ".toQuery("test_table")." was not run. ".mysql_error();
}

将您的数据库名称替换为dbname

答案 1 :(得分:0)

我认为您正在选择函数外部的数据库。可能是因为可变的可访问性。

尝试将行mysql_query("Use test_schema ");放入函数中。

function toQuery($tblName){
$t = "testtitle";
$art = "testarticle";
$auth = "testauthor";
mysql_query("Use `test_schema`");
return "INSERT INTO `$tblName` VALUES ('$t', '$art', '$auth', null)";
}