2012-06-21 2 views
14

Я хочу избежать строки в magento, но когда я использую mysql_real_escape_string, я получаю предупреждение.Как вывести mysql в magento?

Предупреждение: mysql_real_escape_string() [function.mysql реального спусковая строка]: Не удается подключиться к локальной MySQL сервера через разъем «/var/lib/mysql/mysql.soc .... . '

Я не мог найти функцию запуска mysql от magento. И что же мне делать?

+0

Да, и все еще ищут ответа, чтобы найти ответ. – user1463076

+0

попробуйте: http://forums.cpanel.net/f354/cant-connect-local-mysql-server-through-socket-var-lib-mysql-mysql-sock-111-a-78444.html и: http : //stackoverflow.com/questions/5376427/cant-connect-to-local-mysql-server-through-socket-var-mysql-mysql-sock-38 – alfasin

ответ

24

Используйте это, чтобы избежать строки для запроса и добавить окружающие одиночные кавычки:

Mage::getSingleton('core/resource')->getConnection('default_write')->quote($string); 

Вы можете посмотреть Varien_Db_Adapter_Pdo_Mysql для дальнейшего котирования деталей в случае необходимости.

+0

Спасибо, эта функция хорошо экранирует строку. Он также добавляет кавычки в начале и конце строки. Надеюсь, теперь это сработает. – user1463076

+1

Не могли бы вы отметить вопрос как ответ, тоже? – Vinai

+1

Эта цитата добавляла цитаты в начале и в конце строки. Затем я тестировал magento без какой-либо функции экранирования, и нет необходимости избегать строки. Я думаю, что magento имеет функцию экранирования по умолчанию. мой код '($ tbl_customer = getMazeTable ("customer_entity"); \t \t \t \t \t \t $ соединение = Mage :: getSingleton ('ядро/ресурс') \t \t \t \t \t \t \t -> GetConnection ('core_read'); \t \t \t \t \t \t $ выберите = $ connection-> выберите() \t \t \t \t \t \t-> от ($ tbl_customer) \t \t \t \t \t \t \t -> где ('электронная почта =?', $ Электронной почты);) ' – user1463076

7

Я думаю, что Magento использует уровень доступа БД на основе PDO, который автоматически управляет экранированием при условии, что вы используете связанные параметры. Пример от Using Magento Methods to write Insert Queries with care for SQL Injection

$write = Mage::getSingleton("core/resource")->getConnection("core_write"); 

// Concatenated with . for readability 
$query = "insert into mage_example " 
     . "(name, email, company, description, status, date) values " 
     . "(:name, :email, :company, :desc, 0, NOW())"; 

$binds = array(
    'name' => "name' or 1=1", 
    'email' => "email", 
    'company' => "company", 
    'desc' => "desc", 
); 
$write->query($query, $binds); 
+1

Это прекрасный пример того, почему ответ со ссылкой не является хорошей идеей: ссылка не работает. – OSdave

+0

Исправлено, пожалуйста, удалите downvote. – siliconrockstar

+1

Благодарим вас за исправление, я удалил downvote – OSdave

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