前提・実現したいこと
php初心者です。ご教授お願い致します。
dbを操作し、自分で入力した「商品」と「値段」を追加してhtmlで表示したいです。エラーメッセージが出てますが、もう一度表示すると正常になります。どこを修正すればいいのでしょうか。
以下の画像が参考です。
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
Fatal error: Uncaught TypeError: mysqli_fetch_array(): Argument #1 ($result) must be of type mysqli_result, bool given in C:\xampp\htdocs\test\test18.php:29 Stack trace: #0 C:\xampp\htdocs\test\test18.php(29): mysqli_fetch_array(true) #1 {main} thrown in C:\xampp\htdocs\test\test18.php on line 29
該当のソースコード
<?php $syohin = ''; if(isset($_POST['syohin']) === TRUE){ $syohin = $_POST['syohin']; } $nedan = ''; if(isset($_POST['nedan']) === TRUE){ $nedan = $_POST['nedan']; } $syohin_data = []; $host = 'localhost'; $username = 'root'; $passwd = ''; $dbname = 'sample'; $link = mysqli_connect($host, $username, $passwd, $dbname); if ($link) { mysqli_set_charset($link, 'utf8'); $query = "SELECT * FROM good_table"; if($syohin !== ""){ $query = "INSERT INTO good_table(good_name, good_price) VALUES('$syohin', '$nedan')"; } $result = mysqli_query($link, $query); while ($row = mysqli_fetch_array($result)) { $syohin_data[] = $row; } mysqli_free_result($result); mysqli_close($link); } else { print 'DB接続失敗'; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> table, td, th { border: solid black 1px; } table { width: 300px; } .texta { width: 100px; } .texta { margin-bottom: 20px; } p { display: inline-block; } </style> </head> <body> <h1>追加する商品は</h1> <form method="POST"> <p>商品:<input type="text" class="texta" name="syohin"></p> <p>値段:<input type="text" class="texta" name="nedan"></p> <input type="submit" value="追加"> </form> <table> <tr> <th>商品</th> <th>値段</th> </tr> <?php foreach ($syohin_data as $value) { ?> <tr> <td><?php print htmlspecialchars($value['good_name'], ENT_QUOTES, 'UTF-8'); ?></td> <td><?php print htmlspecialchars($value['good_price'], ENT_QUOTES, 'UTF-8'); ?></td> </tr> <?php } ?> </table> </body> </html>
試したこと
while文の所が失敗しているのは分かるのですが・・・
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/13 07:27
2021/04/13 07:51