PHP - mysql转储不能与密码中的符号一起使用

I tried the mysqldump in php

shell_exec("mysqldump --user=$username --password=$password --host=$host $database > dump.sql");

Works fine if password is plain. But when there's a symbol in the password & in my case, it does't work. Any idea why, or how this can be resolved?

Short answer could be don't put symbols in your password. But that's not the answer I'm looking for and some DB passwords are beyond my reach. So I need a solution or a workaround.

Using quotes worked. Thanks +Mubin

 shell_exec("mysqldump --user='$username' --password='$password' --host=$host $databaseName > dump.sql");

Given that you're using some unknown input, I'd use escapeshellcmd, which should be able to deal with everything (including having a ' in your password).