我正在尝试根据更改的ID创建表但我收到了语法错误:
FAIL2:您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在#5; 5附近使用正确的语法(myID varchar(255),Data varchar(255),Related varchar(255),)'在第1行
@mysql_select_db('mydb'); // Connect to database
// Create Table
$tl = $myID[1];
$sqltable = $tl[0]; // Get first char from id
$sql = "CREATE TABLE IF NOT EXISTS $sqltable(myID varchar(255),Data varchar(255),Related varchar(255));";
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
die('FAIL2: ' . mysql_error());
}
echo "DONE<br>";
如何解决这个问题?
答案 0 :(得分:1)
尝试使用mysqli _ **
作为示例$link = mysqli_connect('localhost', 'user', 'pass', 'test');
/* check connection */
if (!$link) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$sqltable = 1234;
$stmt = mysqli_prepare($link, "CREATE TABLE IF NOT EXISTS `{$sqltable}` (
`myID` varchar(255),
`Data_` varchar(255),
`Related` varchar(255)
);"
);
if (mysqli_stmt_execute($stmt)) {
echo "success";
} else {
echo "failure";
}
mysqli_stmt_close($stmt);
现在,如果变量$ sqltable来自用户输入,为了避免sql注入,你应该首先检查一个表名的白名单。
更改“数据”列,它是MySQL中的保留字