script para respaldar bases de datos mysql en php, pero requiero migrar a mysqli

publicado por: Anonymous
    <?php

backup_tables('XXXXXXX','XXXXXXX','XXXXXXX','XXXXXXX');


/* backup the db OR just a table */
//En la variable $talbes puedes agregar las tablas especificas separadas por comas:
//profesor,estudiante,clase
//O déjalo con el asterisco '*' para que se respalde toda la base de datos

function backup_tables($host,$user,$pass,$name,$tables = '*')
{
   
   $link = mysql_connect($host,$user,$pass);
   mysql_select_db($name,$link);
   
   //get all of the tables
   if($tables == '*')
   {
      $tables = array();
      $result = mysql_query('SHOW TABLES');
      while($row = mysql_fetch_row($result))
      {
         $tables[] = $row[0];
      }
   }
   else
   {
      $tables = is_array($tables) ? $tables : explode(',',$tables);
   }
   
   //cycle through
   foreach($tables as $table)
   {
      $result = mysql_query('SELECT * FROM '.$table);
      $num_fields = mysql_num_fields($result);
      
      $return.= 'DROP TABLE '.$table.';';
      $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
      $return.= "nn".$row2[1].";nn";
      
    for ($i = 0; $i < $num_fields; $i++)
      {
         while($row = mysql_fetch_row($result))
         {
            $return.= 'INSERT INTO '.$table.' VALUES(';
            for($j=0; $j<$num_fields; $j++) 
            {
               $row[$j] = addslashes($row[$j]);
               $row[$j] = ereg_replace("n","\n",$row[$j]);
               if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
               if ($j<($num_fields-1)) { $return.= ','; }
            }
            $return.= ");n";
         }
      }
      $return.="nnn";
   }
   
   //save file
   $handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
   fwrite($handle,$return);
   fclose($handle);
}

echo "<script>";
  echo "alert ('Respaldo realizado exitosamente.');";
  echo "window.location.replace('index.php');";
  echo "</script>";


?>

Funciona pero me marca estos errores:

Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead.

Deprecated: Function ereg_repace() is deprecated

He tratado de cambiar a mysqli pero deja de funcionar, podrían aconsejarme como puedo migrar a mysqli, también como podría restaurar la copia mas reciente respaldada.

Con respecto a que deja de funcionar, en realidad crea el archivo pero sin información y me marca los siguientes errores:

Warning: mysqli_select_db() expects parameter 1 to be mysqli, string
given in /backup/backup.php on line 15 Warning: mysqli_query() expects
at least 2 parameters, 1 given in /backup/backup.php on line 21
Warning: mysqli_fetch_row() expects parameter 1 to be mysqli_result,
null given in /backup/backup.php on line 22

muchas gracias.

solución

Una opción seria :

fíjate bien en la configuración del php por si esta activado la opción ‘mysqli’ en la parte de extensiones. Si no esta activado, no se puede usar.
Solo tienes que quitar el punto y coma al lado (;) y ya esta.

creo que es asi

...
;extensión = mysqli
...

Modificado:

En tal caso, yo diría que usted ha puesto mal el orden de los parámetros.

Según la documentación que se puede encontrar aqui,

el objeto conector que es lo que obtengas al hacer la llamada

“mysqli_connect”, debería venir como primer parámetro en la función “mysqli_select_db”.

Por ejemplo, en el caso de “mysqli_select_db(Mysqli $link, String $nombre)”,

$link(de tipo Mysqli) es el connector y $nombre(tipo String) es el nombre

de la base de datos al que intentas conecta.

Asi pues, debería usted revisar los demás que te han dado errores similares y

coregir según.

Espero que esto te sirve para resolver los errores.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *