Php mysql数据库备份类-帮助我添加端口功能

Php mysql数据库备份类-帮助我添加端口功能,php,mysql,Php,Mysql,我有一个db备份类,但没有选择添加端口功能来保存来自远程db的备份。当前,脚本在默认端口下工作正常。有人能帮我在这个脚本中添加端口功能吗 $host = $_POST['dbhost']; $user = $_POST['dbuser']; $password = $_POST['dbpass']; $databaseName = $_POST['dbname']; $path = "$savepath"; // Put the complete path here -- /home/user/

我有一个db备份类,但没有选择添加端口功能来保存来自远程db的备份。当前,脚本在默认端口下工作正常。有人能帮我在这个脚本中添加端口功能吗

$host = $_POST['dbhost'];
$user = $_POST['dbuser'];
$password = $_POST['dbpass'];
$databaseName = $_POST['dbname'];
$path = "$savepath"; // Put the complete path here -- /home/user/database.sql for example

// Report all errors
error_reporting(E_ALL);

/**
 * Define database parameters here
 */
define("DB_HOST", $host);
define("DB_USER", $user);
define("DB_PASSWORD", $password);
define("DB_NAME", $databaseName);
define("OUTPUT_DIR", $path);
define("TABLES", '*');

/**
 * Instantiate Backup_Database and perform backup
 */
$backupDatabase = new Backup_Database(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$status = $backupDatabase->backupTables(TABLES, OUTPUT_DIR) ? 'OK' : 'KO';
echo "<br /><br /><br />Backup result: ".$status;
header('Location: index.php');
/**
 * The Backup_Database class
 */
class Backup_Database {
    /**
     * Host where database is located
     */
    var $host = "";

    /**
     * Username used to connect to database
     */
    var $username = "";

    /**
     * Password used to connect to database
     */
    var $passwd = "";

    /**
     * Database to backup
     */
    var $dbName = "";

    /**
     * Database charset
     */
    var $charset = '';

    /**
     * Constructor initializes database
     */
    function Backup_Database($host, $username, $passwd, $dbName, $charset = 'utf8')
    {
        $this->host     = $host;      
        $this->username = $username;
        $this->passwd   = $passwd;
        $this->dbName   = $dbName;
        $this->charset  = $charset;

        $this->initializeDatabase();
    }

    protected function initializeDatabase()
    {
        $conn = mysql_connect($this->host, $this->username, $this->passwd);
        mysql_select_db($this->dbName, $conn);
        if (! mysql_set_charset ($this->charset, $conn))
        {
            mysql_query('SET NAMES '.$this->charset);
        }
    }

    /**
     * Backup the whole database or just some tables
     * Use '*' for whole database or 'table1 table2 table3...'
     * @param string $tables
     */
    public function backupTables($tables = '*', $outputDir = '.')
    {
        try
        {
            /**
            * Tables to export
            */
            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);
            }

            $sql = 'CREATE DATABASE IF NOT EXISTS '.$this->dbName.";\n\n";
            $sql .= 'USE '.$this->dbName.";\n\n";

            /**
            * Iterate tables
            */
            foreach($tables as $table)
            {
                echo "Backing up ".$table." table...";

                $result = mysql_query('SELECT * FROM '.$table);
                $numFields = mysql_num_fields($result);

                $sql .= 'DROP TABLE IF EXISTS '.$table.';';
                $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
                $sql.= "\n\n".$row2[1].";\n\n";

                for ($i = 0; $i < $numFields; $i++)
                {
                    while($row = mysql_fetch_row($result))
                    {
                        $sql .= 'INSERT INTO '.$table.' VALUES(';
                        for($j=0; $j<$numFields; $j++)
                        {
                            $row[$j] = addslashes($row[$j]);
                            $row[$j] = str_replace("\n","\\n",$row[$j]);
                            if (isset($row[$j]))
                            {
                                $sql .= '"'.$row[$j].'"' ;
                            }
                            else
                            {
                                $sql.= '""';
                            }

                            if ($j < ($numFields-1))
                            {
                                $sql .= ',';
                            }
                        }

                        $sql.= ");\n";
                    }
                }

                $sql.="\n\n\n";

                echo " OK" . "<br />";
            }
        }
        catch (Exception $e)
        {
            var_dump($e->getMessage());
            return false;
        }

        return $this->saveFile($sql, $outputDir);
    }

    /**
     * Save SQL to file
     * @param string $sql
     */
    protected function saveFile(&$sql, $outputDir = '.')
    {
        if (!$sql) return false;

        try
        {
            $handle = fopen($outputDir.'/db-backup-'.$this->dbName.'-'.date("Ymd-His", time()).'.sql','w+');
            fwrite($handle, $sql);
            fclose($handle);
        }
        catch (Exception $e)
        {
            var_dump($e->getMessage());
            return false;
        }

        return true;
    }
}
$host=$\u POST['dbhost'];
$user=$\u POST['dbuser'];
$password=$_POST['dbpass'];
$databaseName=$\u POST['dbname'];
$path=“$savepath”//将完整路径放在这里--/home/user/database.sql
//报告所有错误
错误报告(E_全部);
/**
*在此处定义数据库参数
*/
定义(“DB_主机”,$HOST);
定义(“DB_用户”,$USER);
定义(“DB_密码”、$PASSWORD);
定义(“DB_名称”,$databaseName);
定义(“OUTPUT_DIR”,$path);
定义(“表”、“*”);
/**
*实例化备份\u数据库并执行备份
*/
$backupdatebase=新的备份数据库(数据库主机、数据库用户、数据库密码、数据库名称);
$status=$backupdatebase->backupTables(表,输出目录)?'OK':'KO';
回显“


备份结果:.$status; 标题('Location:index.php'); /** *备份数据库类 */ 类备份库{ /** *数据库所在的主机 */ var$host=“”; /** *用于连接到数据库的用户名 */ var$username=“”; /** *用于连接到数据库的密码 */ var$passwd=“”; /** *要备份的数据库 */ var$dbName=“”; /** *数据库字符集 */ var$charset=''; /** *构造函数初始化数据库 */ 函数备份\u数据库($host、$username、$passwd、$dbName、$charset='utf8') { $this->host=$host; $this->username=$username; $this->passwd=$passwd; $this->dbName=$dbName; $this->charset=$charset; $this->initializeDatabase(); } 受保护函数initializeDatabase() { $conn=mysql\u connect($this->host,$this->username,$this->passwd); mysql\u select\u db($this->dbName,$conn); 如果(!mysql\u set\u charset($this->charset,$conn)) { mysql_查询('SET NAMES'.$this->charset); } } /** *备份整个数据库或只是一些表 *对整个数据库使用“*”或“表1表2表3…” *@param string$表 */ 公共函数backupTables($tables='*',$outputDir='.')) { 尝试 { /** *要导出的表 */ 如果($tables=='*')) { $tables=array(); $result=mysql_查询('SHOW TABLES'); while($row=mysql\u fetch\u row($result)) { $tables[]=$row[0]; } } 其他的 { $tables=is_数组($tables)?$tables:explode(',',$tables); } $sql='如果数据库不存在,则创建数据库。'$this->dbName.;\n\n“; $sql.='使用“.$this->dbName.”;\n\n“; /** *迭代表 */ foreach($tables作为$table) { 回显“正在备份”。$table。“table…”; $result=mysql\u查询('SELECT*FROM'.$table); $numFields=mysql\u num\u字段($result); $sql.='如果存在,请删除表。'$TABLE.';'; $row2=mysql_fetch_行(mysql_查询('SHOW CREATE TABLE'.$TABLE)); $sql.=“\n\n”。$row2[1]。”;\n\n”; 对于($i=0;$i<$numFields;$i++) { while($row=mysql\u fetch\u row($result)) { $sql.='INSERT INTO'.$table.'值('; 对于($j=0;$jgetMessage()); 返回false; } 返回$this->saveFile($sql,$outputDir); } /** *将SQL保存到文件 *@param string$sql */ 受保护的函数saveFile(&$sql,$outputDir='.')) { if(!$sql)返回false; 尝试 { $handle=fopen($outputDir./db backup-'.$this->dbName.-'.date(“Ymd-His”,time())..sql',“w+”); fwrite($handle,$sql); fclose($handle); } 捕获(例外$e) { 变量转储($e->getMessage()); 返回false; } 返回true; } }
您可以在主机参数中指定端口,即foo.bar:1234..但是mysql\u connect已被弃用,很快将被删除。您应该花点时间升级到。

您找到这个类了吗,还是自己编写的?我找到了这个类@Micah,可以帮助吗?简单。用mysqli重写您的类,然后使用
mysqli:\u-construct
连接到您的db服务器。不过,您应该这样做,因为mysql扩展在PHP 5.5.0中已被弃用,将来将被删除。需要更多帮助吗?mysqli库的行为非常相似,因此应该很容易修复。@Bjoern谢谢您的评论。您能编辑我的代码并回答吗?我真的很想应用程序谢谢你的帮助。我无法编辑代码,因为我是新手。。