我正在进行简单的脚本安装,用户进入该页面,系统表就会创建。这些表的SQL代码位于我通过file_get_contents函数访问的同一目录中,然后设置为mysql_query。
但总是会出错。我不明白,因为当我通过phpMyAdmin运行代码时,它没有任何问题。它能是什么?
PHP
$sql = file_get_contents("install.sql");
mysql_query($sql) or die("Error: ".mysql_error());
SQL
DROP TABLE IF EXISTS `jogos`;
CREATE TABLE `jogos` (
`id` int(15) NOT NULL AUTO_INCREMENT,
`casaid` varchar(255) NOT NULL,
`foraid` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
错误
错误:您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在
附近使用正确的语法 'CREATE TABLE `jogos` (
`id` int(15) NOT NULL AUTO_INCREMENT,
`casaid` varc'
第2行
提前致谢。
修改:
感谢Joel和Florian的解释。我不知道MySQLi,无论如何,一个不需要使用扩展的解决方案。对于那些需要它的人:
$sqls = ""; // here go your all sql's
$split_sqls = explode(";", $sql);
for($index = 0; $index < count($split_sqls) - 1; $index++) {
$query = mysql_query($split_sqls[$index]);
if(!$query)
die("Error at $index SQL.\n\n".mysql_error());
}
问候!
答案 0 :(得分:2)
单个mysql_query
不支持多个查询。你必须使用支持它的东西 - 比如mysqli::multi_query
。从长远来看,学习mysqli或PDO也会让你受益,因为mysql扩展已被充分理由弃用。
答案 1 :(得分:0)
mysql_query()函数不支持多个查询。 PHP5具有 mysqli_multi_query()函数,该函数执行一个或多个查询,这些查询由分号连接。
$link = mysqli_connect("host", "user", "password", "database");
$query = file_get_contents("install.sql");
mysqli_multi_query($link, $query) or die("Error: ".mysqli_error($link));;
mysqli_close($link);
有关详细信息,请查看here。
答案 2 :(得分:0)
感谢Joel和Florian的解释。我不知道MySQLi,无论如何,一个不需要使用扩展的解决方案。对于那些需要它的人:
$sqls = ""; // here go your all sql's
$split_sqls = explode(";", $sql);
for($index = 0; $index < count($split_sqls) - 1; $index++) {
$query = mysql_query($split_sqls[$index]);
if(!$query)
die("Error at $index SQL.\n\n".mysql_error());
}