我的代码遇到了问题,我一直收到这个错误。 您的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行”
答案 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_..!