2012-03-06 2 views
0

У меня странная ошибка в приложении Code Igniter. Когда я вызываю mysql_real_escape_string, Code Igniter или PHP выдает эту ошибку.Почему PHP пытается получить доступ к моей базе данных localhost?

<h4>A PHP Error was encountered</h4> 

<p>Severity: Warning</p> 
<p>Message: mysql_real_escape_string() [<a href='function.mysql-real-escape-string'>function.mysql-real-escape-string</a>]: Can't connect to local MySQL server through socket '/No-MySQL-hostname-was-specified' (2)</p> 
<p>Filename: helpers/formval_helper.php</p> 
<p>Line Number: 13</p> 

Почему просто вызов mysql_real_escape_string вызывает доступ к моей базе данных localhost? Разве эта функция просто не форматирует строку? Кроме того, я даже не использую мою базу данных localhost.

+1

Зачем вы вызываете mysql_real_escape_string в качестве помощника формы? – deceze

+1

У вас есть Active Record и параметризованные запросы, доступные с минимальными усилиями, почему вы используете эту функцию? И почему вы размещаете метод БД внутри помощника? (в идеале он должен идти в модели) –

ответ

3

http://php.net/manual/en/function.mysql-real-escape-string.php

соединение MySQL требуется перед использованием mysql_real_escape_string() в противном случае ошибка уровня E_WARNING, и FALSE, возвращается. Если link_identifier не определен, используется последнее соединение MySQL.

1

Поведение mysql_real_escape_string частично зависит от определенных параметров сервера базы данных, включая набор символов. Если вы хотите что-то общее, используйте addslashes, но учтите, что он даст неверные результаты для некоторых неясных многобайтовых наборов символов.

+2

Пожалуйста, не рекомендуем 'addlashes' над' mysql_real_escape_string'. Последнее довольно плохо уже в этот день и в возрасте, «добавляет» еще хуже. – deceze

1

Ошибка говорит все.

Его сообщение не может подключиться к вашему серверу mysql с любыми учетными данными и именем сервера, которые вы предоставили!

Прежде чем использовать эту функцию, вам необходимо сначала подключиться к вашей БД! Он имеет определенную зависимость от сервера MySql!

+1

Я чувствую потребность людей обращаться к журналам? – Karma

1

Эта функция имеет второй параметр link_identifier. В этой документации указано:

Соединение с MySQL. Если идентификатор ссылки не указан, предполагается последняя ссылка, открытая mysql_connect(). Если такой ссылки не обнаружено, она попытается создать такую, как если бы mysql_connect() был вызван без аргументов. Если соединение не обнаружено или не установлено, генерируется ошибка уровня E_WARNING.

Смежные вопросы