Red de conocimiento informático - Material del sitio web - Cómo usar PHP para ejecutar archivos .SQL

Cómo usar PHP para ejecutar archivos .SQL

Este artículo es un análisis detallado del código de implementación para ejecutar archivos SQL usando PHP. Amigos que necesitan una referencia.

Demostración de php: copie el código de la siguiente manera: dbHost = $host; $this >dbUser = $usuario; $this >dbPassword = $this >dbSchema = $schema } function createFromFile($sqlPath $delimiter = (;/n)| ((;/r/n))|(;/r) $prefix = $menter = array( # )) { //Determinar si el archivo existe if(!file_exists($sqlPath)) return false; ($sqlPath rb);? $sqlStr = fread($handle size($sqlPath)); // Dividir el delimitador de declaración de la sintaxis sql $segment = explode(";" trim($sqlStr)); $segmento); //Eliminar comentarios y líneas en blanco adicionales foreach($segmento como & $sentencia) { $sentencia = explotar("/n" $sentencia); $newStatement = array(); { if( != trim($subSentence)) { //Determinar si es un comentario $isComment = false; foreach($menter as $er) { if(eregi("^(" $er ")" trim($ subSentence))) { $isComment = true; break; } } // Si no es un comentario, se considera una declaración SQL if(!$isComment) $newStatement[] = $subSentence;? = $newStatement; } //Prefija el nombre de la tabla if( != $prefix) { ? //Solo es válido cuando el nombre de la tabla aparece en la primera fila. Por ejemplo, CREATE TABLE talbeName $regxTable = "^[/`/ / "]{ }[/ _a zA Z]+[/_a zA Z ]*[/`/ /"]{ }$";//Expresión regular para procesar nombres de tablas $regxLeftWall = "^[/`/ /"] { }"; $ sqlFlagTree = matriz( "CREAR" => matriz( "TABLE" => matriz( "$regxTable" => ) ) "INSERT" => matriz( "

INTO" => array( "$regxTable" => ) ) ); foreach($segmento como & $declaración) { $tokens = split(" " $declaración[ ]); $tableName = array(); $this >findTableName ($sqlFlagTree $tokens $nombreTabla); nombre ] } $declaración[ ] = str_replace($tableName[ nombre ] $newTableName $declaración[ ]); // Declaración SQL combinada foreach($segmento como & $declaración) { $newStmt = ; declaración como $sentencia) { $newStmt = $newStmt trim($sentencia) "/n"; } $sentencia = $newStmt } //¿Para probar? //var_dump($segmento); ); // self::saveByQuery($segmento); return true; } función privada saveByQuery($sqlArray) { $conn = mysql_connect($this >dbHost $this >dbUser $this >dbPassword($this > dbSchema); ); foreach($sqlArray como $sql) { mysql_query($sql); ^[/`/ /"]{ }"; if(count($tokens)<=$tokensKey) devuelve falso;? if( == trim($tokens[$tokensKey])) { return self::findTableName( $ sqlFlagTree $tokens $tokensKey+ $tableName); } else { foreach($sqlFlagTree as $bandera => $v) {? if(eregi($bandera $tokens[$tokensKey])) { if( ==$v) { $ nombreTabla[ nombre ] = $tokens[$tokensKey] if(eregi($regxLeftWall $nombreTabla[ nombre ]

)) { $nombreTabla[ pared izquierda ] = $NombreTabla[ nombre ]{ }; devolver verdadero } else{ return self::findTableName($v $tokens $tokensKey+ & $tableName); función writeArrayToFile($fileName $dataArray $delimiter="/r/n") { $handle=fopen($fileName "wb"); $texto = ; $dataArray como $datos) { $texto = $texto $datos $delimitador; } fwrite($manejar $texto); //Prueba $dbM = nuevo DBManager( localhost w f test ); $dbM >createFromFile( datos sql null fff_ ?> lishixinzhi/Artículo/programa/PHP/201311/ 21281