PHP代码中的SQL语法错误,即使命令在命令行中运行
我正在尝试在XAMPP中生成一些SQL命令。我的查询返回以下错误: 您的SQL语法有错误;检查手册 对应于要使用的正确语法的MariaDB服务器版本 near“创建表如果不存在Kaytajat(id INT(10))不为空 自动增量,第2行的tunn' 我找不到语法错误。当我在命令行中通过复制粘贴运行完全相同的命令时,它可以工作。那么我需要在PHP代码中使用一些不同的语法吗? 另外,如果我删除第一个命令,错误消息将移动到PHP代码中的SQL语法错误,即使命令在命令行中运行,php,mysql,Php,Mysql,我正在尝试在XAMPP中生成一些SQL命令。我的查询返回以下错误: 您的SQL语法有错误;检查手册 对应于要使用的正确语法的MariaDB服务器版本 near“创建表如果不存在Kaytajat(id INT(10))不为空 自动增量,第2行的tunn' 我找不到语法错误。当我在命令行中通过复制粘贴运行完全相同的命令时,它可以工作。那么我需要在PHP代码中使用一些不同的语法吗? 另外,如果我删除第一个命令,错误消息将移动到[…]正确语法,以使用near'CREATE TABLE if NOT EX
[…]正确语法,以使用near'CREATE TABLE if NOT EXISTS rivit[…]
。如果我删除第二个命令,错误来自第三个命令,依此类推。我真的不知道错误在哪里
$query='
CREATE DATABASE IF NOT EXISTS asdgfhj;
CREATE TABLE IF NOT EXISTS kayttajat
(
id INT(10) NOT NULL AUTO_INCREMENT,
tunnus1 varchar(32) NOT NULL,
tunnus2 varchar(32) NOT NULL,
nimi varchar(32),
nimi2 varchar(32),
oikeus INT(10) NOT NULL DEFAULT 1,
PRIMARY KEY (id)
);
CREATE TABLE IF NOT EXISTS rivit
(
id INT(10) NOT NULL AUTO_INCREMENT,
sivu INT(10) NOT NULL,
kayttaja INT(10) NOT NULL,
sana varchar(500),
kommentti varchar(1000),
aika TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
muutos TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY(id)
);
CREATE TABLE IF NOT EXISTS sivut
(
id INT(10) NOT NULL AUTO_INCREMENT,
nimi varchar(32) NOT NULL,
ohje varchar(2000) NOT NULL,
salaisuus INT(10) NOT NULL DEFAULT 1,
PRIMARY KEY(id)
);
';
$mysqli->query($query) or die($mysqli->error);
该方法设计用于执行单个查询,而不是多个查询
您需要的是执行由分号分隔的多个查询
$query = "SELECT CURRENT_USER();";
$query .= "SELECT Name FROM City ORDER BY ID LIMIT 20, 5";
/* execute multi query */
if ($mysqli->multi_query($query)) {
...
}
如果希望使用一个命令执行多个查询,则应使用
另外,您不选择将用于insert
语句的数据库。
您应该为所有表添加asdgfhj
前缀,或在create table
语句之后使用
带有前缀的示例:
<?php
$query='
CREATE DATABASE IF NOT EXISTS asdgfhj;
CREATE TABLE IF NOT EXISTS asdgfhj.kayttajat
(
id INT(10) NOT NULL AUTO_INCREMENT,
tunnus1 varchar(32) NOT NULL,
tunnus2 varchar(32) NOT NULL,
nimi varchar(32),
nimi2 varchar(32),
oikeus INT(10) NOT NULL DEFAULT 1,
PRIMARY KEY (id)
);
';
$mysqli->multi_query($query) or die($mysqli->error);
也许换成?我不认为你能跑多个。谢谢!你太棒了!
<?php
$query='
CREATE DATABASE IF NOT EXISTS asdgfhj;
USE asdgfhj;
CREATE TABLE IF NOT EXISTS kayttajat
(
id INT(10) NOT NULL AUTO_INCREMENT,
tunnus1 varchar(32) NOT NULL,
tunnus2 varchar(32) NOT NULL,
nimi varchar(32),
nimi2 varchar(32),
oikeus INT(10) NOT NULL DEFAULT 1,
PRIMARY KEY (id)
);
';
$mysqli->multi_query($query) or die($mysqli->error);