【发布时间】:2012-10-01 10:54:54
【问题描述】:
我正在通过 PHP 脚本运行以下查询
DROP TABLE IF EXISTS `address`;CREATE TABLE `address` ( `Id`
int(11) NOT NULL auto_increment, `EntityId` int(11) NOT NULL,
`sStreet1` varchar(50), `sStreet2` varchar(50), `sCity`
varchar(50), `sLoc` varchar(50), `sPv` char(2), `sState`
varchar(50), `sZip` varchar(10), `sType` varchar(50),
`FiscalAddress` tinyint(1) NOT NULL, PRIMARY KEY (`Id`) );
我可以通过不同的客户端(例如 Navicat)毫无问题地运行这个查询,但是通过 PHP 运行这个查询会输出以下内容
$result = mysql_query($query);
if (!$result) {
$message = 'Invalid import content: ' . mysql_error() . "\n\n";
$message .= 'Whole query: ' . $query;
die($message);
}
这将输出以下内容:
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的“CREATE TABLE address (Id int(11) NOT NULL AUTO_INCREMENT, EntityId int(11)”附近使用正确的语法整个查询:DROP TABLE IF EXISTS address; CREATE表地址 ( Id int(11) NOT NULL AUTO_INCREMENT, EntityId int(11) NOT NULL, sStreet1 varchar(50), sStreet2 varchar(50), sCity varchar(50), sLoc varchar(50), sPv char(2), sState varchar(50), sZip varchar(10), sType varchar(50), FiscalAddress tinyint(1) NOT NULL, PRIMARY KEY (Id) );
我做错了什么???
【问题讨论】:
-
切换到mysqli扩展,它可以运行多个查询(就像你在这里做的,但是你使用的mysql扩展不能这样做)php.net/manual/en/mysqli.quickstart.multiple-statement.php并且很容易从您现有的代码到新代码:php.net/manual/en/mysqli.quickstart.dual-interface.php
-
切换到PDO而不是mysql_*~!