phpからmySQLのデータを2つの条件で絞り込み、表示したいのですがうまく行きません
php
1 <?php 2 try{ 3 $pdo = new PDO('mysql:host=localhost;dbname=db2;charset=utf8','root','root', 4 array(PDO::ATTR_EMULATE_PREPARES => false)); 5 6 $wide=$_POST['wide']; 7 $height=$_POST['height']; 8 echo "</br>"; 9 echo "入力内容"; 10 echo "</br>"; 11 echo "幅:"; 12 echo $wide; 13 echo "</br>"; 14 echo "高さ:"; 15 echo $height; 16 echo "</br>"; 17 18 19 //db検索 20 if( $wide == '未選択' && $height == '未選択' ){ 21 //両方未選択 22 echo '両方未選択でした。'; 23 $sql2="SELECT * FROM db2"; 24 $stmt=$pdo->prepare($sql2); 25 $stmt=bindValue(':wide',$wide); 26 $stmt=bindValue(':height',$height); 27 $stmt->execute(); 28 $count=$stmt->rowCount(); 29 print "ヒット件数".$count."件です。"; 30 echo "</br>"; 31 } 32 else if( $wide == "未選択" ){ 33 $sql2="SELECT * FROM db2 WHERE height = :height"; 34 $stmt=$pdo->prepare($sql2); 35 $stmt=bindValue(':height', $height); 36 $stmt->execute(); 37 $count=$stmt->rowCount(); 38 print "ヒット件数".$count."件です。"; 39 echo "</br>"; 40 } 41 42 else if( $height =='未選択'){ 43 $sql2="SELECT * FROM db2 WHERE wide = :wide"; 44 $stmt=$pdo->prepare($sql2); 45 $stmt=bindValue(':wide', $wide); 46 $stmt->execute(); 47 $count=$stmt->rowCount(); 48 print "ヒット件数".$count."件です。"; 49 echo "</br>"; 50 } 51 52 53 else { 54 $sql2="SELECT * FROM db2 WHERE wide = :wide AND height = :height"; 55 $stmt=$pdo->prepare($sql2); 56 $stmt=bindValue(':wide',$wide); 57 $stmt=bindValue(':height',$height); 58 $stmt->execute(); 59 $count=$stmt->rowCount(); 60 print "ヒット件数".$count."件です。"; 61 echo "</br>"; 62 } 63 } 64?> 65<?php 66 foreach($stmt as $row): 67 ?> 68 <img src="<?php echo $row['pic'] ?>"> 69 <?php 70 echo $row['brand'].' '.$row['name'].'価格:'.$row['price']; 71 ?> 72 <a href="<?php $row['url'] ?>">yahoo ショッピングでみる</a> 73 <a href="<?php $row['url'] ?>">楽天市場でみる</a> 74 <?php endforeach ?> 75 76 <?php catch (PDOException $e) { 77 var_dump($e); 78 exit('データベース接続失敗。'.$e->getMessage()); 79 } 80 ?>
というようにすると表示ができません。(画面が真っ白)ですが、
php
1<?php 2 try{ 3 $pdo = new PDO('mysql:host=localhost;dbname=db2;charset=utf8','◯','◯', 4 array(PDO::ATTR_EMULATE_PREPARES => false)); 5 6$wide=$_POST['wide']; 7 $height=$_POST['height']; 8 echo "</br>"; 9 echo "入力内容"; 10 echo "</br>"; 11 echo "幅:"; 12 echo $wide; 13 echo "</br>"; 14 echo "高さ:"; 15 echo $height; 16 echo "</br>"; 17 18 19 //db検索 20 if( $wide == '未選択' && $height == '未選択' ){ 21 //両方未選択 22 echo '両方未選択でした。'; 23 $sql2="SELECT * FROM db2"; 24 $stmt=$pdo->prepare($sql2); 25 $stmt=bindValue(':wide',$wide); 26 $stmt=bindValue(':height',$height); 27 $stmt->execute(); 28 $count=$stmt->rowCount(); 29 print "ヒット件数".$count."件です。"; 30 echo "</br>"; 31 } 32 else if( $wide == "未選択" ){ 33 $sql2="SELECT * FROM db2 WHERE height = :height"; 34 $stmt=$pdo->prepare($sql2); 35 $stmt=bindValue(':height', $height); 36 $stmt->execute(); 37 $count=$stmt->rowCount(); 38 print "ヒット件数".$count."件です。"; 39 echo "</br>"; 40 } 41 42 else if( $height =='未選択'){ 43 $sql2="SELECT * FROM db2 WHERE wide = :wide"; 44 $stmt=$pdo->prepare($sql2); 45 $stmt=bindValue(':wide', $wide); 46 $stmt->execute(); 47 $count=$stmt->rowCount(); 48 print "ヒット件数".$count."件です。"; 49 echo "</br>"; 50 } 51 52 53 else { 54 $sql2="SELECT * FROM db2 WHERE wide = :wide AND height = :height"; 55 $stmt=$pdo->prepare($sql2); 56 $stmt=bindValue(':wide',$wide); 57 $stmt=bindValue(':height',$height); 58 $stmt->execute(); 59 $count=$stmt->rowCount(); 60 print "ヒット件数".$count."件です。"; 61 echo "</br>"; 62 63 // catchをこの部分に持って来ます。 64 }catch (PDOException $e) { 65 var_dump($e); 66 exit('データベース接続失敗。'.$e->getMessage()); 67 } 68 } 69 70 71 72 //絞り込んだ情報を表示します 73 <?php 74 foreach($stmt as $row): 75 ?> 76 <img src="<?php echo $row['pic'] ?>"> 77 <?php 78 echo $row['brand'].' '.$row['name'].'価格:'.$row['price']; 79 ?> 80 <a href="<?php $row['url'] ?>">yahoo ショッピングでみる</a> 81 <a href="<?php $row['url'] ?>">楽天市場でみる</a> 82 <?php endforeach ?> 83 84 85 86 87
という感じでcatchをtryの後に持って来るとプログラムは処理されますがforeach文の部分が反応しません。
ご迷惑をかけて申し訳ありませんでした。
宜しくお願いいたします。
php
1<?php 2 try{ 3 $pdo = new PDO('mysql:host=localhost;dbname=db2;charset=utf8','◯','◯', 4 array(PDO::ATTR_EMULATE_PREPARES => false)); 5 6$wide=$_POST['wide']; 7 $height=$_POST['height']; 8 echo "</br>"; 9 echo "入力内容"; 10 echo "</br>"; 11 echo "幅:"; 12 echo $wide; 13 echo "</br>"; 14 echo "高さ:"; 15 echo $height; 16 echo "</br>"; 17 18 19 //db検索 20 if( $wide == '未選択' && $height == '未選択' ){ 21 //両方未選択 22 echo '両方未選択でした。'; 23 $sql2="SELECT * FROM db2"; 24 $stmt=$pdo->prepare($sql2); 25 $stmt=bindValue(':wide',$wide); 26 $stmt=bindValue(':height',$height); 27 $stmt->execute(); 28 $count=$stmt->rowCount(); 29 print "ヒット件数".$count."件です。"; 30 echo "</br>"; 31 } 32 else if( $wide == "未選択" ){ 33 $sql2="SELECT * FROM db2 WHERE height = :height"; 34 $stmt=$pdo->prepare($sql2); 35 $stmt=bindValue(':height', $height); 36 $stmt->execute(); 37 $count=$stmt->rowCount(); 38 print "ヒット件数".$count."件です。"; 39 echo "</br>"; 40 } 41 42 else if( $height =='未選択'){ 43 $sql2="SELECT * FROM db2 WHERE wide = :wide"; 44 $stmt=$pdo->prepare($sql2); 45 $stmt=bindValue(':wide', $wide); 46 $stmt->execute(); 47 $count=$stmt->rowCount(); 48 print "ヒット件数".$count."件です。"; 49 echo "</br>"; 50 } 51 52 53 else { 54 $sql2="SELECT * FROM db2 WHERE wide = :wide AND height = :height"; 55 $stmt=$pdo->prepare($sql2); 56 $stmt=bindValue(':wide',$wide); 57 $stmt=bindValue(':height',$height); 58 $stmt->execute(); 59 $count=$stmt->rowCount(); 60 print "ヒット件数".$count."件です。"; 61 echo "</br>"; 62 63 // catchをこの部分に持って来ます。 64 }catch (PDOException $e) { 65 //ここにエラー表示を持って来ました 66 ini_set('display_errors', "On"); 67 var_dump($e); 68 exit('データベース接続失敗。'.$e->getMessage()); 69 } 70 } 71 72 73 74 //絞り込んだ情報を表示します 75 <?php 76 foreach($stmt as $row): 77 ?> 78 <img src="<?php echo $row['pic'] ?>"> 79 <?php 80 echo $row['brand'].' '.$row['name'].'価格:'.$row['price']; 81 ?> 82 <a href="<?php $row['url'] ?>">yahoo ショッピングでみる</a> 83 <a href="<?php $row['url'] ?>">楽天市場でみる</a> 84 <?php endforeach ?> 85 86 87 88 89
エラー表示を入れましたが何も変わりませんでした
html
1 2<form action="◯.php" method="POST"> 3 <p> 4 <select name="wide"> 5 <option value="未選択">選択して下さい</option> 6 <option value="狭い">狭い</option> 7 <option value="やや狭い">やや狭い</option> 8 <option value="標準">標準</option> 9 <option value="やや広い">やや広い</option> 10 <option value="広い">広い</option> 11 </select> 12 13 <h2>高さ</h2> 14 <select name="height"> 15 <option value="未選択">選択して下さい</option> 16 <option value="低い">低い</option> 17 <option value="やや低い">やや低い</option> 18 <option value="標準">標準</option> 19 <option value="やや高い">やや高い</option> 20 <option value="やや高い">やや高い</option> 21 </select> 22 </p> 23 <p><input type="submit" value="検索"></p> 24 </form> 25 26```エラー内容 27Fatal error: Uncaught Error: Call to undefined function bindValue() in /Applications/MAMP/htdocs/size.php:79 Stack trace: #0 {main} thrown in /Applications/MAMP/htdocs/size.php on line 79 28とかいてありましたが解決方法が判りません。 2979行目が```php 30else { 31 $sql2="SELECT * FROM db2 WHERE wide = :wide AND height = :height"; 32 $stmt=$pdo->prepare($sql2); 33//ここが79行目でした $stmt=bindValue(':wide', $wide); 34 $stmt=bindValue(':height',$height); 35 $stmt->execute(); 36 $count=$stmt->rowCount(); 37 print "ヒット件数".$count."件です。"; 38 echo "</br>"; 39 }
回答2件
あなたの回答
tips
プレビュー