Использование двойных кавычек против одинарных кавычек при передаче строки в качестве параметра функции - PullRequest
2 голосов
/ 20 сентября 2010

У меня очень странная проблема, ну, на самом деле это не проблема, потому что я исправил ее, но все же, когда я пытаюсь подключиться к базе данных mysql с:

mysql_connect("server", "user", "pass") or die(mysql_error());

я получаю:

Доступ запрещен для пользователя 'user' @ 'server' (используя пароль: YES)

, но когда я изменяю кавычки вокруг пароля на одинарные кавычки:

mysql_connect("server", "user", 'pass') or die(mysql_error());

работает просто отлично.У меня нет этой проблемы на другом сервере, который у меня есть.так что может быть что-то в настройках mysql или в php.ini?

спасибо.

Ответы [ 2 ]

7 голосов
/ 20 сентября 2010

В вашем пароле должно быть $.

Это приведет к тому, что php будет интерполировать переменную в строке.

У вас также может быть escape-последовательность, например, \t в вашем пароле, который вызовет аналогичные проблемы.

Ознакомьтесь с руководством для получения дополнительной информации:

http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing

2 голосов
/ 20 сентября 2010

Содержит ли ваш пароль какие-либо специальные символы, такие как $?В двойных кавычках PHP будет пытаться интерпретировать переменные.Таким образом, "My$Password" даст в PHP поиск переменной с именем $Password, которой там нет.Таким образом, полученная строка пароля будет просто My.(Если вы включили отображение E_NOTICE ошибок, вы должны их получить.)

Более того, специальные последовательности символов, такие как \n, интерпретируются в двойных кавычках.

...