我的MySQL语法出了什么问题?

时间:2014-06-07 00:24:25

标签: mysql syntax

我已经按照语法指南来创建表格,但是我一直都会遇到语法错误。有人可以帮助我吗?

$createQuery = sprintf("CREATE TABLE %s(message_ID INT NOT NULL AUTO_INCREMENT, message TEXT, sender TEXT, recipient TEXT, PRIMARY KEY( message_ID )) ENGINE=MyISAM;",$tablename);
$createResult = mysqli_query($connect, $createQuery);
在这种情况下, $ tablename是1-3

2 个答案:

答案 0 :(得分:2)

你需要像这样转义你的表名

$tablename = '`1-3`';

答案 1 :(得分:2)

尝试向%s添加返回标记:

$createQuery = sprintf("CREATE TABLE `%s` (message_ID INT NOT NULL AUTO_INCREMENT, message TEXT, sender TEXT, recipient TEXT, PRIMARY KEY( message_ID )) ENGINE=MyISAM;",$tablename);
$createResult = mysqli_query($connect, $createQuery);

此外,您的原始代码旁边有%s,位于括号(旁边。技术上有后退,这应该不是问题,但你应该养成在处理MySQL查询时在事物之间添加空格的习惯。

也就是说,只需将sprintf()直接放入代码中,您也可以在没有$tablename的情况下获得相同的结果,因为双引号允许字符串替换:

$createQuery = "CREATE TABLE `$tablename` (message_ID INT NOT NULL AUTO_INCREMENT, message TEXT, sender TEXT, recipient TEXT, PRIMARY KEY( message_ID )) ENGINE=MyISAM;";
$createResult = mysqli_query($connect, $createQuery);