私はしばらく前にPHPサイドプロジェクトを開始し、最近すべてのコードのクリーンアップと更新を開始しました。その一部は、DBクエリにPDOを使用し始めるように物事を動かすことです。ある特定のクエリでは、関数とともに句WHERE
を使用する句ステートメントがあります。これまでのところ、これを適切に機能させることはできませんでした。誰かがそれが機能するかどうかさえ指摘していただければ幸いです。BETWEEN
INET_ATON()
この質問を見つけたので、BETWEEN
ステートメントに問題はないと思いましたが、問題の原因となっている機能との組み合わせである可能性があります。
クエリのその部分は次のようになります。
SELECT foo, bar FROM table JOIN more_table
WHERE item1 = :value AND ip_address BETWEEN INET_ATON(:ipstart) AND INET_ATON(:ipend)
実際のクエリはそれよりもかなり大きいですが、基本的にはこれで機能します。トークンを実際の値に置き換えるために、次のforeachループを設定しています(var_dump
正しい値が渡されていることを確認できるように、そこにあります)。
foreach($p as $k=>$v) {
echo var_dump($k, $v);
if(is_int($v)){
$querySubmit->bindValue($k, $v, PDO::PARAM_INT);
} else {
$querySubmit->bindValue($k, $v, PDO::PARAM_STR);
}
}
とを使用するように設定されたクエリに制限があるかどうかPDO::Prepare
を誰かが知っている場合は、知っていただければ幸いです。PDO::bindValue
BETWEEN
INET_ATON()