0

以下に示すように、問題を絞り込んだ過去数日間、問題が発生しました。カスタム距離関数で使用しない場合、パラメーターの受け渡しは正常に機能します。誰が私が間違っているのか教えてもらえますか? 今のところ、フィールドを手動でサニタイズし、クエリにハードコーディングしています。

WORKS (正しい結果を返す):

$sth = $db->prepare("SELECT * FROM providers WHERE distance('42.8','-73.9',lat,lon)<25");
$sth->execute();

動作しません (すべてのプロバイダーを返します):

$sth = $db->prepare("SELECT * FROM providers WHERE distance('42.8','-73.9',lat,lon)<:radius");
$sth->execute(array(":radius" =>25));
4

2 に答える 2

2

私は PDO にあまり詳しくありませんが、おそらくそれは、を渡しているためでintあり、ステートメントはデフォルトで値を a として扱いstringます。マニュアル ページを参照してください: http://php.net/manual/en/pdostatement.execute.phpで詳細を確認しinput_parametersてください。ステートメントを実行する前に、いつでも使用bind_param()してデータを正しい型にすることができます。

于 2013-10-25T18:09:46.187 に答える