質問しつれいします。
phpでmysqlを使ってデータベースの更新をしたいのですがエラーが表示されてしまいます。
どこを直せばいいのか分からず困っています。
表示されるエラーは
Warning: sprintf(): Too few arguments in C:\xampp\htdocs\menu\update_do.php on line 11
です。
ソースコードは以下になります。
[index.php]
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>登録メニュー一覧</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <?php require('dbconnect.php'); ?> <div id="menu_list"> <table class="menu_list"> <tr> <th>商品管理ID</ht> <th>カテゴリー</ht> <th>商品名</ht> <th>価格</ht> <th>備考</ht> <th>編集</ht> <th>削除</ht> </tr> <?php $recodeSet = $mysqli->query('SELECT * FROM menu ORDER BY id'); while($table = mysqli_fetch_assoc($recodeSet)){ ?> <tr> <td><?php echo(htmlspecialchars($table['id'])); ?></td> <td><?php echo(htmlspecialchars($table['kind'])); ?></td> <td><?php echo(htmlspecialchars($table['name'])); ?></td> <td><?php echo(htmlspecialchars($table['price'])); ?></td> <td><?php echo(htmlspecialchars($table['remarks'])); ?></td> <td><a href="update.php?id=<?php echo(htmlspecialchars($table['id'])); ?>">編集</a></td> <td><a href="delete.php?id=<?php echo(htmlspecialchars($table['id'])); ?>">削除</a></td> </tr> <?php } ?> </table> </div> </body> </html>
[update.php]
<?php require('dbconnect.php'); $id = $_REQUEST['id']; $sql = sprintf("SELECT * FROM menu WHERE id = %d", $mysqli->real_escape_string($id) ); $recodeSet = $mysqli->query($sql); $data = mysqli_fetch_assoc($recodeSet); ?> <p>変更する内容を記入してください。</p> <form id="frmUpdate" name="frmUpdate" method="post" action="update_do.php"> <dl> <dt> <label for="id">IDを変更する場合のみ入力してください。</label> </dt> <dd> <input type="number" id="id" name="id" value="<?php echo(htmlspecialchars($data['id'], ENT_QUOTES)); ?>" > </dd> <dt> <label for="kind">種類</label> </dt> <dd> <input type="text" id="kind" name="kind" value="<?php echo(htmlspecialchars($data['kind'], ENT_QUOTES)); ?>" > </dd> <dt> <label for="name">商品名</label> </dt> <dd> <input type="text" id="name" name="name" size="40" value="<?php echo(htmlspecialchars($data['name'], ENT_QUOTES)); ?>" > </dd> <dt> <label for="price">価格</label> </dt> <dd> <input type="number" id="price" name="price" value="<?php echo(htmlspecialchars($data['price'], ENT_QUOTES)); ?>" > </dd> <dt> <label for="remarks">備考欄</label> </dt> <dd> <input type="text" id="remarks" name="remarks" size="255" value="<?php echo(htmlspecialchars($data['remarks'], ENT_QUOTES)); ?>" > </dd> </dl> <input type="submit" value="更新する"> <input type="hidden" name="id" value="<?php echo(htmlspecialchars($data['id'], ENT_QUOTES)); ?>" </form>
[update_do.php]
<?php require('dbconnect.php'); $id = $_REQUEST['id']; $sql = sprintf('UPDATE menu SET id=%d, kind="%s", name="%s", price=%d, remarks="%s" WHERE id =%d', $mysqli->real_escape_string($_POST['id']), $mysqli->real_escape_string($_POST['kind']), $mysqli->real_escape_string($_POST['name']), $mysqli->real_escape_string($_POST['price']), $mysqli->real_escape_string($_POST['remarks']) ); ?> <p>更新しました</p>
以上になります。
解決方法がお分かりになる方がいらっしゃいましたらご教授お願いします。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/03 08:22
退会済みユーザー
2018/07/03 08:24
2018/07/03 08:30
2018/07/03 08:37
2018/07/04 05:44
2018/07/04 05:56
退会済みユーザー
2018/07/04 05:59
2018/07/04 06:19
2018/07/04 06:25
2018/07/04 06:31
退会済みユーザー
2018/07/04 06:35