MySQL Php语法错误,请查看手册

时间:2013-12-05 09:27:06

标签: php mysql sql

我的代码遇到了问题,我一直收到这个错误。 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的“[table_name]”附近使用正确的语法

我的代码如下:

 <?
//indicate the database you want
$db_name="test";

//connect to database
$connection = @mysql_connect("localhost","root","") or die (mysql_error());
$db = @mysql_select_db($db_name,$connection) or die (mysql_error());
//start the sql statement
$sql = @"CREATE TABLE $_POST[table_name] (";


for ($i =0;$i < count($_POST['field_name']);$i++){
    $sql .=$_POST['field_name'][$i]." ".$_POST['field_type'][$i];
    if ($_POST["field_length"][$i] !="") {
        $sql .= " (".$_POST ["field_length"][$i]."),";
    } else {
        $sql .= ",";
    }
}
//clean up
$sql = substr($sql,0,-1);
$sql .= ")";
//execute
$result = mysql_query($sql,$connection) or die(mysql_error());

//get a good message for success
if ($result) {
    $msg = "<P>".$_POST['table_name']." has been created!</p>";
    }
    ?>

我有一个表单分别用于表名,字段数,一个单独的php doc用于其他数据库的东西,只是在我尝试在另外两个之后运行这个文件时,我只是在本地主机上给我带来麻烦。 / p>

收到$ sql和$ _POST的已编辑语句后,我收到了消息

“CREATE TABLE $ _POST [table_name]”... $ _ POST [table_name]“您的SQL语法中有错误;请查看与您的MySQL服务器版本对应的手册,以便在'[table_name]附近使用正确的语法]“......嘿char(1))'在第1行”

2 个答案:

答案 0 :(得分:1)

看起来$_POST[table_name]未被查询中的值替换

$sql = "CREATE TABLE ". $_POST['table_name']." (";

答案 1 :(得分:1)

你必须将table_name放入',因为你想访问$ _POST ['table_name']。

这就是为什么你的查询必须这样开始的原因:

  

“CREATE TABLE”。$ _ POST ['table_name']。“..

并且您应该始终转义$ _POST []或$ _GET []值以防止SQL注入。

使用函数mysql_real_escape_string($_POST...)进行转义或使用prepared statements with PDO

同样不推荐使用mysql _...切换到mysqli_..