14

我想在magento中转义字符串,但是当我使用时mysql_real_escape_string,我收到警告。

警告:mysql_real_escape_string() [function.mysql-real-escape-string]: 无法通过套接字 '/var/lib/mysql/mysql.soc.....' 连接到本地 MySQL 服务器

我找不到任何 magento 的核心 mysql 转义功能。所以我该怎么做?

4

2 回答 2

27

使用它来转义查询的字符串并添加周围的单引号:

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

如果需要,您可以查找Varien_Db_Adapter_Pdo_Mysql进一步的报价细节。

于 2012-06-21T07:00:31.203 回答
9

我认为 Magento 使用基于 PDO 的 DB Access 层,如果您使用绑定参数,它会自动处理转义。使用 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);
于 2013-09-30T20:09:55.110 回答