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 アクセス レイヤーを使用していると思います。これは、バインドされたパラメーターを使用すると自動的にエスケープを処理します。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 に答える