PHP5.3.3
MySQL5.7
limit句がある場合「PDO::PARAM_INT」を用いて型設定していますが結果が上手くいきません。文法間違いのようですが間違いが見つけられません。
limitとoffsetを指定しない場合正常に動作しています。
よろしくお願いします。
呼び足し側
PHP
1$print_r($keywords);//内容確認のため 2echo $sql;//内容確認のため 3$retq = $GDb -> selQuery($sql,$keywords);
結果
PHP
1選択実施しました 2Array ( [keyaddress] => %神奈川% [limit] => 5 [offset] => 0 ) 3select distinct m.ZuID,m.name,m.address,s.member,s.sex,m.torokudate,m.age,m.income,m.deliverydate,m.CdtFLG from M_ShainTEST as m left join M_ShainSub as s on m.ZuID=s.ZuID where m.address like :keyaddress order by m.name asc order by m.name asc limit :limit offset :offset; 4選択実施できませんCan't select ERROR!SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order by m.name asc limit ? offset ?' at line 1
クラスの中の呼び出される関数
PHP
1 public function selQuery($sql,$data) 2 { 3 try{ 4 $this->cn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 5 $stmt = $this->cn-> prepare($sql); 6 foreach ($data as $key => $val) { 7 if($key === 'limit'){ 8 $stmt->bindValue(':' . $key, (int) $val, PDO::PARAM_INT); 9 }elseif($key === 'offset'){ 10 $stmt->bindValue(':' . $key, (int) $val, PDO::PARAM_INT); 11 }else{ 12 $stmt->bindValue(':' . $key, $val); 13 } 14 } 15 $stmt->execute(); 16 $rows = $stmt->fetchAll(); 17 echo("選択実施しました"); 18 } catch (\PDOException $e) { 19//\header('Content-Type: text/plain; charset=UTF-8', true, 500); 20 echo("選択実施できません"); 21 exit("Can't select ERROR!".$e -> getMessage()); 22 } 23 return $rows; 24 }
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/11 06:04