MySQLよりも安全にするためにphpMySQLiクラスを使用していますが、問題があります。
アポストロフィを含むデータの列があります。この列を、アポストロフィを持たない変数と比較しています。これは、URLからのクリーンな文字列です。私の古いコードでは、SQLステートメントでReplace(category_name、''''、'')を簡単に実行でき、アポストロフィは要素になりませんでした。
これをphpmyadminにスローすると、機能します。
SELECT DISTINCT merchant_category
FROM products
WHERE Replace( category_name, '''', '' ) = 'childrens accessories'
ORDER BY merchant_category
しかし、MySQLiでは、解析されないため、これは実際の問題です。
$params = array();
$params[0] = "Replace(category_name, '''', '')";
$params[1] = $this->db->escape($this->cleanDBValue(requestQS("cat1")));
//print_r($params);
$rs = $this->db->rawQuery("SELECT DISTINCT merchant_category FROM products WHERE ? = ? ORDER BY merchant_category ", $params);
クエリと照合しようとしているデータは次のとおりです。
children's accessories
そして、私は何の結果も得ていません。どうすればこれを回避できますか?