多个mysql_query?

时间:2014-01-21 22:18:27

标签: php mysql sql

我正在进行简单的脚本安装,用户进入该页面,系统表就会创建。这些表的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());
}

问候!

3 个答案:

答案 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());
}