将db备份为xml时遇到mysqldump问题

I'm trying to backup one of my databases with mysqldump and I'm trying to export it to an xml file which already exists. Here is what I have:

<?php
$dbUser = 'user';    // db User
$dbPass = 'pass';    // db User Password
$dbName = 'db';      // db name
$dest   = $_SERVER['DOCUMENT_ROOT'] . 'backup'; // Path to directory

class MySQLDump {
private $cmd;

function MySQLDump($dbUser,$dbPass,$dbName,$dest) {
    $fname = $dbName.'.xml';
    $this->cmd='mysqldump -X -u'.$dbUser.' -p'.$dbPass.' '.$dbName.
        ' >'.$dest.'/'.$fname;
}

public function backup() {
    system($this->cmd, $error);
    if($error) {
        trigger_error ('Backup failed: ' . $error . '<br />Attempted: ' . $this->cmd);
    }
}
} // end class def

$mysqlDump = new MySQLDump($dbUser, $dbPass, $dbName, $dest);  
$mysqlDump->backup();
?>

This always generates the error thrown in the backup function. Here is a sample of $cmd's output:

mysqldump -X -udan -pdanPass danDB >/var/www/prod/dan/web/backup/danDB.xml

Any idea what's going wrong? I've never really used mysqldump so I'm not sure if I'm approaching this correctly. Any help is greatly appreciated.

try adding a space between -u and your $dbUser.

According to Does mysqldump return a status? something is going wrong, yes. We can not say if a warning or an error because you didn't share the return code.

Apart from that you can easily learn what exactly goes wrong by looking into STDERR output returned from the mysqldump command. E.g. you can pipe it into database.err:

mysqldump -X -udan -pdanPass danDB >/path/to/backup/danDB.xml 2>database.err
                                                              ^^^^^^^^^^^^^^

This one work for me

mysqldump --user=xxx --password=xxx  databasename  --xml > file.xml