在创建表时获取语法

时间:2016-11-16 20:18:00

标签: php mysql

我正在尝试使用php创建一个mySQL表,每当我运行代码时,我都会收到语法错误。字符串是

$sql = "DROP TABLE Colors;
CREATE TABLE Colors (
color VARCHAR(30) NOT NULL,
vote INT(16) NOT NULL UNSIGNED,
hex VARCHAR(10) NOT NULL,
PRIMARY KEY (color)
)";

查询行是($ conn是与服务器的连接)

$conn->query($sql)

错误是

You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for the right syntax to use near 
'CREATE TABLE Colors (
color VARCHAR(30) NOT NULL,
vote INT(16) NOT NULL UNSIGNED' at line 2

有谁看到我做错了什么?

2 个答案:

答案 0 :(得分:4)

您需要一次执行一条语句。 ;是命令行工具用作分隔符的构造,它实际上并未在MySQL协议中用于通信,因此它是一个错误。 DELIMITER值也可以更改。

拆分它看起来像这样:

$conn->query("DROP TABLE Colors");
$conn->query("CREATE TABLE ...");

注意,我强烈鼓励您在此处进行正确的错误检查并启用异常,以便在声明失败时您了解它。

答案 1 :(得分:1)

不确定您使用的是哪个mysql库,但在PHP中,您应该在场景中使用函数multi_query

$sql = "DROP TABLE Colors;
        CREATE TABLE Colors (
        color VARCHAR(30) NOT NULL,
        vote INT(16) NOT NULL UNSIGNED,
        hex VARCHAR(10) NOT NULL,
        PRIMARY KEY (color)
)";

mysqli_multi_query($conn, $sql);