ホームページ  >  記事  >  バックエンド開発  >  thinkphp 配列クエリ関連の問題

thinkphp 配列クエリ関連の問題

WBOY
WBOYオリジナル
2016-06-13 12:24:49835ブラウズ

thinkphp の配列クエリの問題
thinkphp のクエリ条件は

$map['id'] = I('get.id');<br />$map['cid'] = i('get.cid');<br />$m->where($map)->find();


です。つまり、生成される SQL ステートメントは
SELECT `id`,`title`,`pic` FROM `news` WHERE `id` = null AND `cid` = null  LIMIT 0,12


です。取得した ID と CID が空の場合、クエリ条件はまだ存在しますが、値が null になるため、データが見つかりません。
正しいのは、取得した値が空の場合、where 条件は存在しないはずです。存在する、つまり検索 すべての情報がそこにあります。
その理由は何ですか?
-----解決策のアイデア-------------- --------
私は thinkphp を使ったことはありませんが、同様の問題を何度も見たことがあります。これはおそらく彼のバグの 1 つです。
彼のコードを変更できない場合は、次のことを行ってください。最初に前処理することができます
$map['id'] = I('get.id');<br />$map['cid'] = i('get.cid');<br />$map = array_diff($map, array('')); //过滤掉空元素<br />$m->where($map)->find();

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。