Вопрос по magento, mysql – Как MySQL убежать в magento?

14

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

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.soc.....'

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

Да, и все еще гуглял, чтобы найти ответ. user1463076
пытаться:forums.cpanel.net/f354/… а также:stackoverflow.com/questions/5376427/… alfasin

Ваш Ответ

2   ответа
9

что Magento использует слой доступа к БД, основанный на PDO, который обрабатывает экранирование автоматически, если вы используете связанные параметры. Пример изИспользование методов Magento для написания запросов на вставку с осторожностью для SQL-инъекций

$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);
это прекрасный пример того, почему отвечать со ссылкой не очень хорошая идея: ссылка не работает.
Исправлено, пожалуйста, удалите downvote.
спасибо за исправление, я убрал downvote
Спасибо, и спасибо за честность моих ответов, я должен был знать лучше, чем отвечать просто ссылкой.
25

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

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

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

Да, вам не нужно цитировать$email, Zend_Db справится с этим для вас. Вы можете пометить его как ответ рядом с ответом, который хотите принять.
эта цитата добавляла кавычки в начале и в конце строки. Затем я протестировал magento без какой-либо экранирующей функции, и нет необходимости экранировать строку. Я думаю, что у magento есть функция по умолчанию. мой код($tbl_customer = getMazeTable("customer_entity"); $connection = Mage::getSingleton('core/resource') ->getConnection('core_read'); $select = $connection->select() ->from($tbl_customer) ->where('email=?',$email);) user1463076
как пометить вопрос как ответивший? user1463076
Не могли бы вы также отметить вопрос как ответ?
Спасибо, эта функция хорошо экранирует строку. Он также добавляет кавычки в начале и конце строки. Я надеюсь, что это будет работать сейчас. user1463076

Похожие вопросы