質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

解決済

エラーの対処法がわかりません

YutaEvol
YutaEvol

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

2回答

0評価

0クリップ

13閲覧

投稿2020/03/23 09:26

phpここに言語を入力

<?php $errors=[]; $address_data=[]; $number=''; $flag=FALSE; $host = 'localhost'; // データベースのホスト名又はIPアドレス $username = ''; // MySQLのユーザ名 $passwd = ''; // MySQLのパスワード $dbname = ''; // データベース名 $link = mysqli_connect($host, $username, $passwd, $dbname); $pref=''; $city=''; $query=''; $page=1; $count=''; $totalpage=''; if(isset($_GET["page"]) && $_GET["page"]>0){ $page=(int)$_GET["page"]; }else{ $page=1; } $perpage=10; $start_page=($page-1)*$perpage; if($link){ if($_SERVER['REQUEST_METHOD'] === 'GET'){ mysqli_set_charset($link, 'utf8'); if(isset($_GET['first'])===TRUE){ $flag=TRUE; if(isset($_GET['number'])===TRUE){ $number=$_GET['number']; } if(mb_strlen($number)===0){ $errors[]='未入力です'; }else if(preg_match('/^[0-9]{7}$/',$number)!==1){ $errors[]='形式が違います'; } $query_count="SELECT count(address_number) FROM address_table WHERE WHERE address_number= '$number';"; $query="SELECT address_number,address_1,address_2,address_3 FROM address_table WHERE address_number=$number"; } if(isset($_GET['second'])===TRUE){ $flag=TRUE; if(isset($_GET['pref'])===TRUE){ $pref=$_GET['pref']; } if(isset($_GET['city'])===TRUE){ $city=$_GET['city']; } if(mb_strlen($city)===0){ $errors[]='市区町村が未入力です'; } if($pref==='pref_name'){ $errors[]='選択されていない'; } $query_count="SELECT count(address_number) FROM address_table WHERE address_1='$pref' AND address_2 LIKE '$city%';"; $totalpage=ceil($count[0]/$perpage); $query="SELECT address_number,address_1,address_2,address_3 FROM address_table WHERE address_1='$pref' AND address_2 LIKE '$city%' LIMIT $start_page ,$perpage;"; } // 件数を取得してからにする LIMITの使い方 ページリングでlimitを使うときは二段階でやる $result=mysqli_query($link,$query_count); $count=mysqli_fetch_row($result); $result = mysqli_query($link, $query); // $row_cnt=mysqli_num_rows($result); // 1行ずつ結果を配列で取得します while ($row = mysqli_fetch_array($result)) { $address_data[] = $row; } // 結果セットを開放します mysqli_free_result($result); // 接続を閉じます mysqli_close($link); } }else { echo 'DB接続失敗'; } ?> <!DOCTYPE html> <html> <head> <meta charset='utf-8'> <title>郵便番号</title> </head> <body> <h1>郵便番号検索</h1> <h2>郵便番号から検索</h2> <form method='get'> <input type='text' name='number' placeholder='例) 1010001'> <input type='submit' name='first' value='検索'> <h2>地名から検索</h2> <p>都道府県を検索 <select name='pref'>   <option value='pref_name'>都道府県</option> <option value="北海道">北海道</option> <option value="青森県">青森県</option> <option value="岩手県">岩手県</option> <option value="宮城県">宮城県</option> <option value="秋田県">秋田県</option> <option value="山形県">山形県</option> <option value="福島県">福島県</option> <option value="茨城県">茨城県</option> <option value="栃木県">栃木県</option> <option value="群馬県">群馬県</option> <option value="埼玉県">埼玉県</option> <option value="千葉県">千葉県</option> <option value="東京都">東京都</option> <option value="神奈川県">神奈川県</option> <option value="新潟県">新潟県</option> <option value="富山県">富山県</option> <option value="石川県">石川県</option> <option value="福井県">福井県</option> <option value="山梨県">山梨県</option> <option value="長野県">長野県</option> <option value="岐阜県">岐阜県</option> <option value="静岡県">静岡県</option> <option value="愛知県">愛知県</option> <option value="三重県">三重県</option> <option value="滋賀県">滋賀県</option> <option value="京都府">京都府</option> <option value="大阪府">大阪府</option> <option value="兵庫県">兵庫県</option> <option value="奈良県">奈良県</option> <option value="和歌山県">和歌山県</option> <option value="鳥取県">鳥取県</option> <option value="島根県">島根県</option> <option value="岡山県">岡山県</option> <option value="広島県">広島県</option> <option value="山口県">山口県</option> <option value="徳島県">徳島県</option> <option value="香川県">香川県</option> <option value="愛媛県">愛媛県</option> <option value="高知県">高知県</option> <option value="福岡県">福岡県</option> <option value="佐賀県">佐賀県</option> <option value="長崎県">長崎県</option> <option value="熊本県">熊本県</option> <option value="大分県">大分県</option> <option value="宮崎県">宮崎県</option> <option value="鹿児島県">鹿児島県</option> <option value="沖縄県">沖縄県</option> </select> 市区町村<input type='text' name='city'><input type='submit' name='second' value='検索'> </p> </form> <hr> <?php foreach($errors as $error){ ?> <p><?php echo $error; ?></p> <?php } ?> <?php if($flag===FALSE){ ?> <p>ここに検索結果が表示されます</p> <?php }else if($flag===TRUE && count($errors)===0){ ?> <p><?php echo $count[0]; ?></p> <?php } ?> <?php echo '<table>'; echo '<tr><td>郵便番号</td><td>都道府県</td><td>市区町村</td><td>町域</td></tr>'; ?> <?php foreach($address_data as $address){?> <?php if (count($errors)===0){?> <tr> <td><?php echo htmlspecialchars($address['address_number'], ENT_QUOTES, 'UTF-8');?></td> <td><?php echo htmlspecialchars($address['address_1'], ENT_QUOTES, 'UTF-8');?></td> <td><?php echo htmlspecialchars($address['address_2'], ENT_QUOTES, 'UTF-8');?></td> <td><?php echo htmlspecialchars($address['address_3'], ENT_QUOTES, 'UTF-8');?></td> </tr> <?php } ?> <?php } ?> <?php echo '<table>'?> <!--件数が10件を超えて且つ最後のページでなければ次へを表示--> <?php if($page < $totalpage){?> <a href="./practice_post_code_advanced.php?pref=<?php print $pref; ?>&city=<?php print $city; ?>&second=address&page=<?php echo ($page +1);?>">次へ</a> <?php } ?> <!--件数が10件を超えて且つ最初のページでなければ次へを表示--> <?php if( $page > 1){?> <a href="./practice_post_code_advanced.php?pref=<?php print $pref; ?>&city=<?php print $city; ?>&second=address&page=<?php echo ($page -1);?>">前へ</a> <?php } ?> </body> </html>コード

質問
検索件数を表示させたくて地名からの場合はうまく表示されるのですが
郵便番号の検索ではWarning: mysqli_fetch_row() expects parameter 1 to be mysqli_result, boolean given in /home/ec2-user/environment/htdocs/php17/practice_post_code_advanced.php on line 73
というエラー表示が出ます。

試したこと
$query_count="SELECT count(address_number) FROM address_table
WHERE WHERE address_number= '$number';";(まず数を検索して該当する数を取得)
$result=mysqli_query($link,$query_count); (実行)
$count=mysqli_fetch_row($result);
echo $count[0]件

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。