Closed. This question is
off-topic。它当前不接受答案。
想改善这个问题吗?
Update the question,因此它是
on-topic,用于堆栈溢出。
5年前关闭。
我一直在寻找高低两处寻找答案,但即时通讯不断收到同样的错误。
查询:
CREATE TABLE `example`.`profile` (
`type` VARCHAR(60) NOT NULL,
`optionalPassword` VARCHAR(30),
`dateFound` DATETIME NOT NULL DEFAULT NOW(),
`code` VARCHAR(15) NOT NULL,
`loggedOut` TINYINT(1) NOT NULL,
`banned` TINYINT(1) NOT NULL,
`GLOBALBan` TINYINT(1) NOT NULL,
`verifiedDate` DATETIME NOT NULL,
PRIMARY KEY (`code`)
);
CREATE TABLE `example`.`friends` (
`ID` VARCHAR(45) NOT NULL,
`nickName` VARCHAR(40),
`relation` VARCHAR(25),
`confirmed` TINYINT(1),
`FoundDate` DATETIME DEFAULT NOW(),
`anniversary` DATETIME,
`canWrite` TINYINT(1) default 1,
`canRead` TINYINT(1) default 1,
`collectedSubjects` VARCHAR(40),
`collectedInstitutions` VARCHAR(40),
`collectedWorkPlacement` VARCHAR(40),
PRIMARY KEY (`ID`)
);
我不断收到此MySQL查询错误
1064:您的SQL语法错误;检查手册
对应于您的MySQL服务器版本以使用正确的语法
在'CREATE TABLE
example
。
friends
(
userID
VARCHAR(45)NOT
NULL,第13行的
nickName
V'
如果我通过Oracle MySQL WorkBench运行完整查询,则只有通过“ php”运行该错误时,才会出现此错误,它完全可以正常工作,我无法理解。
编辑:
$SpecificTableInstanceConn = Connect('localhost','example','user','') or die("cant connect");
$query = "
CREATE TABLE `$ID`.`profile` (
`type` VARCHAR(60) NOT NULL,
`optionalPassword` VARCHAR(30),
`dateFound` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`code` VARCHAR(15) NOT NULL,
`loggedOut` TINYINT(1) NOT NULL,
`banned` TINYINT(1) NOT NULL,
`GLOBALBan` TINYINT(1) NOT NULL,
`verifiedDate` TIMESTAMP,
PRIMARY KEY (`code`)
);
CREATE TABLE `$ID`.`friends` (
`ID` VARCHAR(45) NOT NULL,
`nickName` VARCHAR(40),
`relation` VARCHAR(25),
`confirmed` TINYINT(1),
`FoundDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`anniversary` TIMESTAMP,
`canWrite` TINYINT(1) default 1,
`canRead` TINYINT(1) default 1,
`collectedSubjects` VARCHAR(40),
`collectedInstitutions` VARCHAR(40),
`collectedWorkPlacement` VARCHAR(40),
PRIMARY KEY (`ID`)
);
";
echo $query;
$Results = Query($SpecificTableInstanceConn,$query) or die("cannot Create Databases");
查询和连接功能:
function Connect($db_host, $db_user, $db_pass, $db_name) {
$conn = mysqli_connect($db_host,$db_user,$db_pass) or die("Cannot connect :o");
if ($db_name != "") {
mysqli_select_db($conn, "$db_name") or die("Cannot connect :o");
}
return $conn;
}
function Query($conn, $Query){
$results = mysqli_query( $conn,$Query);
if (mysqli_errno($conn) != 0){
echo '<br />'.mysqli_errno($conn) . ": " . mysqli_error($conn) . "<br />";
}
mysqli_close($conn);
return $results;
}
mysql_*
不支持多个查询,您将必须使用2个查询来制作两个表或更改为MySQLi/PDO
库。
另外,在表上,如果要使用DEFAULT NOW,则不能将DATETIME
与DEFAULT NOW()
一起使用,而需要使用TIMESTAMP
和CURRENT_TIMESTAMP
。
`dateFound` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
相同的
`FoundDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
在代码上,您需要更改:
$results = mysqli_query( $conn,$Query);
至:
$results = mysqli_multi_query( $conn,$Query);
或者您可以这样做:
$count = strlen($Query) - strlen(str_replace(';', '', $Query));
if ($count > 1)
$results = mysqli_multi_query( $conn,$Query);
else
$results = mysqli_query( $conn,$Query);
接受多个查询。