Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在转储文件中执行sql语句的php脚本_Php_Mysql_Sql_Exec - Fatal编程技术网

在转储文件中执行sql语句的php脚本

在转储文件中执行sql语句的php脚本,php,mysql,sql,exec,Php,Mysql,Sql,Exec,我有一个php脚本,应该执行几个mysql语句,如果没有注释/**/和特征线,一切都可以运行 请帮我添加此功能,同时忽略--注释,好吗 <? $sqlFileToExecute = 'mysql_dump.sql'; $hostname = 'localhost'; $db_user = 'root'; $db_password = ''; $database_name = 'db_'; $link = mysql_connect($h

我有一个php脚本,应该执行几个mysql语句,如果没有注释/**/和特征线,一切都可以运行

请帮我添加此功能,同时忽略
--
注释,好吗

<?
$sqlFileToExecute = 'mysql_dump.sql';
$hostname          = 'localhost';
$db_user           = 'root';
$db_password      = '';
$database_name    = 'db_';
$link = mysql_connect($hostname, $db_user, $db_password);
if (!$link) {
  die ("error connecting MySQL");
}

mysql_select_db($database_name, $link) or die ("wrong DB");
$f = fopen($sqlFileToExecute,"r+");
$sqlFile = fread($f, filesize($sqlFileToExecute));

$sqlArray = explode(';',$sqlFile);
foreach ($sqlArray as $stmt) {

 //THIS SEEMS NOT TO WORK 
 if (strlen($stmt)>3 && substr(ltrim($stmt),0,2)!='/*') {
    $result = mysql_query($stmt);
    if (!$result) {
      $sqlErrorCode = mysql_errno();
      $sqlErrorText = mysql_error();
      $sqlStmt = $stmt;
      break;
    }
  }
}
if ($sqlErrorCode == 0) {
  echo "SETUP COMPLETED ;)";
} else {
  echo "FAIL!<br/>";
  echo "Error code: $sqlErrorCode<br/>";
  echo "Error text: $sqlErrorText<br/>";
  echo "Statement:<br/> $sqlStmt<br/>";
}

?>

您确定需要以这种方式运行它:

你也可以使用

$mysql -pxxx -u username db_name -vvv < sourcefile.sql >/tmp/outfile.log

您可以看到更多选项

。它们不再得到维护。看到了吗?相反,请了解,并使用or-将帮助您确定出现了哪些错误。在读完此问题之前,我强烈建议您关闭
mysql.*
调用,因为它们已被弃用。使用
PDO
instend或
mysqli
看起来像是在处理SQL转储文件。在这种情况下,只需将其全部加载到一起,您就需要替换诸如
$sqlArray=explode(“;”,$sqlFile)之类的内容。这绝不是一件小事——我建议你找一个第三方的。(无论如何,MySQL会自动忽略注释!)假设我无法直接访问服务器MySQL控制台,那么最快的方法就是执行php脚本。我正在做的是将此脚本和包含sql语句的文件.sql上传到服务器(仅ftp访问)。然后,当我知道可用的用户和数据库(我想创建一个表或其他东西)时,我执行php脚本,然后我能够使用这些创建的表,现在问题产生在linebrak和注释中
mysql > source "sourcefile.sql"