PHP - MySQL语法错误(如何解决?)

时间:2017-03-08 19:40:29

标签: php mysql syntax-error

我正在尝试根据更改的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>";

如何解决这个问题?

1 个答案:

答案 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);
  • 在这种情况下,您不能在表名中使用预准备语句, 预准备语句只允许将参数绑定到SQL语句,表名不是那些运行时值之一,因为它确定SQL语句本身的有效性并在执行时更改它可能会改变有效的SQL语句。 / LI>
  • 现在,如果变量$ sqltable来自用户输入,为了避免sql注入,你应该首先检查一个表名的白名单。

  • 更改“数据”列,它是MySQL中的保留字