私はデータベース内でCodeIgniterのクエリクラスを使用して "between"クエリを作成しようとしていますが、where句に変数を追加すると、変数に追加します。このに解析されているCodeIgniterのアクティブレコードクエリで変数のバッククォートを削除/無効にする
$this->db->select(TABLE_DISCOUNTSCARRIER.'.discount')->select(TABLE_DISCOUNTSCARRIER.'.idCarrier')
$this->db->from(TABLE_DISCOUNTSCARRIER);
$this->db->join(TABLE_DISCOUNTS, TABLE_DISCOUNTSCARRIER.'.idDiscount='.TABLE_DISCOUNTS.'.idDiscount');
$this->db->where(TABLE_DISCOUNTSCARRIER.'.idCarrier', $carrier);
$this->db->where($data['from'].' BETWEEN '.TABLE_DISCOUNTS.'.from AND '.TABLE_DISCOUNTS.'.to');
$this->db->or_where($data['to'].' BETWEEN '.TABLE_DISCOUNTS.'.from AND '.TABLE_DISCOUNTS.'.to');
(最後の2行)
SELECT
discountbycarrier.discount,
discountbycarrier.idCarrier
FROM (discountbycarrier)
JOIN discounts
ON discountbycarrier.idDiscount=discounts.idDiscount
WHERE `discountbycarrier`.`idCarrier` = '6'
AND `5` BETWEEN discounts.from AND discounts.to
OR `10` BETWEEN discounts.from AND discounts.to
が既に設定しようとしたの$ this - > DB - > _ protect_identifiers =偽;残りのステートメントでバッククイックを削除しますが、変数は削除しません。すでに変数のintval()を使ってみましたが、どちらもうまくいきません。 $ carrierという変数は、整数として正しく解析されています。 アイデア前もって感謝します。
あなたの問題は、バックの欠如であるクエリ前にこれを追加ティック、特にここでは 'discounts.from'という単語は' from 'という単語を持たないことから予約されています。 – ArtisticPhoenix
私はちょうど_protect_identifiersをfalseに設定しているので、ティックがありません。私がそれを有効にすると、クエリの残りの部分には割引を含むバックティックがあります。 –
私は適切なSQLを使用しています。愚かなクエリビルダーではなく、 '?'のように入れてから値を渡してはいけません。そうでなければ、これはSQLインジェクションのために成熟しています。 – ArtisticPhoenix