SQLのIN句によるテーブル抽出についてです。
下記の記述のように行っておりますが、IN句の中の最初の値に該当するものしか抽出してくれません。
コマンドでたたくと正常に抽出されますが、PHPの処理として実行すると上記の現象が起きます。
PHP
1$this->sql("SELECT * FROM tbl_bbs LEFT JOIN cnt_tag_bbs ON tbl_bbs.id = cnt_tag_bbs.bbs_id WHERE tag_id IN(?) AND delete_flg = 0 ORDER BY modified DESC LIMIT ?,?","search",array($this->search_cat,$this->_offset,$this->per));
下記のような関数に上記を代入し、bindさせています。
PHP
1 2 function sql($sql, $_name="sql", $value) { 3 $stmt = $this->dbh->prepare($sql); 4 if(!empty($value)) { 5 foreach($value as $key => $val) { 6 if(gettype($val)=="string") { 7 $stmt->bindParam($key+1,$val,PDO::PARAM_STR); 8 } elseif(gettype($val)=="integer") { 9 $stmt->bindParam($key+1,$val,PDO::PARAM_INT); 10 } 11 unset($key,$val); 12 } 13 } 14 $this->_result = $stmt->execute(); 15 $this->_primary = $this->dbh->lastInsertId(); 16 $this->$_name = $stmt->fetchAll(PDO::FETCH_ASSOC); 17 return; 18 }
第一引数: SQL文
第二引数: 代入する変数名
第三引数: ?に入る値
こちらのIN(?)に入る値に、1,2,3,4,5,6... という値が入ったとして、
最初の「1」の分だけ抽出され、残りは抽出されずにいます。
bindする関数に問題があるように思うのですが、IN句と相性悪いのでしょうか?
その他の処理は正常に動いています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/12 07:55
2016/06/12 08:07