###前提・実現したいこと
php , PDO , Mysql を利用して、アンド検索を実装したいです。
参照させていただいたサイトをもとに僕の環境にて作成しました。
参照URL
http://qiita.com/ichii/items/bf4fc82b61656d3c9f72
###発生している問題・エラーメッセージ
以下がエラーとして出ています。
Fatal error: Call to a member function execute() on boolean in
###該当のソースコード
<form action="function/detail.php" method="post"> <label>商品名<input type="text" name="search_product_name"></label> <label>商品型番<input type="text" name="search_product_code"></label> <input type="hidden" name="now_page" value="<?=$now_page?>"> <input type="hidden" name="year" value="<?=$year?>"> <input type="hidden" name="season" value="<?=$season?>"> <input type="hidden" name="page_max" value="<?=$page_max?>"> <select name="page_max"> <option value="20">20</option> <option value="50">50</option> <option value="100">100</option> <option value="200">200</option> </select> <input type="submit" value="search" name="search">
$now_page = $_POST['now_page']; $year = $_POST['year']; $season = $_POST['season']; $page_max = $_POST['page_max']; $search_product_name = $_POST['search_product_name']; $search_product_code = $_POST['search_product_code']; $words = preg_split("/[\\x0-\x20\x7f\xc2\xa0\xe3\x80\x80]++/u",$search_product_name,-1,PREG_SPLIT_NO_EMPTY); $conds = ['1'];//値がない場合の処理 $values = []; foreach ($words as $word) { $conds[] = '検索対象フィールド名 LIKE ? ESCAPE "!"'; $values[] = '%' . preg_replace('/(?=[!_%])/', '!', $word) . '%'; } $pdo = db_connect(); $format = "SELECT SQL_CALC_FOUND_ROWS * FROM 検索対象テーブル名 WHERE %s LIMIT %d, %d"; $sql =sprintf($format,implode(' AND ', $conds),$page_max * ($now_page - 1),$page_max); $stmt = $pdo->prepare($sql); $stmt->execute($values);
###試したこと
$sqlを生成した後を見ても文自体は問題なく表示されている印象でした。
SELECT SQL_CALC_FOUND_ROWS * FROM admin_ssk_master_spec WHERE 1 AND item_name LIKE ? AND item_name LIKE ? LIMIT -20, 20
###補足情報(言語/FW/ツール等のバージョンなど)
XAMPP for Windows 5.6.24
mysql Ver 15.1
php 5.6
何か理解の上で間違っている部分がございましたらお手数ですがご指摘いただけましたら幸いです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。