前に書き込んだのが状況がわかったので再度書きます
update.phpでGETで取った番号のデータを表示します
番号は主キーなので変更できないように表示のみにします
update.phpのフォームをuptate2.phpに送ります
<?php
$ID = htmlspecialchars($_GET['番号']);
$pdo = new PDO("mysql:dbname=db_test;host=localhost", "root", "admin");
$st = $pdo->prepare("SELECT * FROM tbl_test WHERE 番号=?");
$st->execute(array($ID));
$row = $st->fetch();
$NAME = htmlspecialchars($row['氏名']);
$ADDR = htmlspecialchars($row['住所']);
?>
<form action="update2.php" method="post">
番号<br> <?php echo $ID ?><br>
<input type="hidden" name="ID" value="<?php echo $ID; ?>">
氏名<br>
<input type="text" SIZE = "50" NAME="NAME" value="<?php echo $NAME ?>"><br>
住所<br>
<input type="text" SIZE = "130"NAME="ADDR" value="<?php echo $ADDR ?>"><br>
<input type="submit">
</form>
アップデ-トphp
update2.php
<?php
$pdo = new PDO("mysql:dbname=db_test;host=localhost", "root", "admin");
$st = $pdo->prepare("UPDATE tbl_test SET 氏名=?,住所=?WHERE 番号=?");
$st->execute(array($_POST['ID'],$_POST['NAME'], $_POST['ADDR']));
?>
レコードを修正しました。
今の現状
エラーが出ないでレコードを修正しました。と表示されるがレコードが修正されていない
どこがいけないと思いますか?
No.3ベストアンサー
- 回答日時:
No.4
- 回答日時:
> ここから氏名と住所が空白だったらエラーメッセージを出したいのでがtryで出せばいいですか
try~catchは例外が発生した場合に、エラーを補足するために使用します。
未入力などのエラーチェック機構は自分で実装する必要があります。
※以下は簡易例です。
update2.php
<?php
$err = "";
if(empty($_POST['NAME'])) $err.= "名前を入力してください。<br>";
if(empty($_POST['ADDR'])) $err.= "住所を入力してください。<br>";
if(empty($err)){
$pdo = new PDO("mysql:dbname=db_test;host=localhost", "root", "admin");
$st = $pdo->prepare("UPDATE tbl_test SET 氏名=?,住所=?WHERE 番号=?");
$st->execute(array($_POST['NAME'], $_POST['ADDR'],$_POST['ID']));
}else{
echo $err;
}
?>
ありがとうございます
未入力だと
住所を入力してくだざい
レコードを修正しましたと表示されます
<html>
<body>
<blockquote>
<?php
$err = "";
if(empty($_POST['NAME'])) $err.= "名前を入力してください。<br>";
if(empty($_POST['ADDR'])) $err.= "住所を入力してください。<br>";
if(empty($err)){
$pdo = new PDO("mysql:dbname=db_test;host=localhost", "root", "admin");
$st = $pdo->prepare("UPDATE tbl_test SET 氏名=?,住所=?WHERE 番号=?");
$st->execute(array($_POST['NAME'], $_POST['ADDR'],$_POST['ID']));
}else{
echo $err;
}
?>
<br>
レコードを修正しました
<br><br><br> <a href="http://localhost/top.php">
<input type = "submit" value = "一覧に戻る" style ="WIDTH: 150px; HEIGHT: 40px"></A>
</blockquote>
</body>
</html>
どこにレコード修正しましたを入れれば直したときだけ出ますか?
No.2
- 回答日時:
> $st = $pdo->prepare("UPDATE tbl_test SET 氏名=?,住所=?WHERE 番号=?");
そのままコピペしているのでしたら、「住所=?」と「WHERE」の間はスペースを空けないとだめですね。
> $st->execute(array($_POST['ID'],$_POST['NAME'], $_POST['ADDR']));
それと、バインドする値の順序が違うような・・・
$st->execute(array($_POST['NAME'], $_POST['ADDR'], $_POST['ID']));
明確にするなら、プレースホルダとbindValue()などを使う方がいいと思います。
$st = $pdo->prepare("UPDATE tbl_test SET 氏名 = :name, 住所 = :addr WHERE 番号 = :id");
$st->bindValue(':name', $_POST['NAME']);
$st->bindValue(':addr', $_POST['ADDR']);
$st->bindValue(':id', $_POST['ID']);
$st->execute();
そもそも、エラーを補足できるように、try~catchを使う方がいいです。
try{
$pdo = new PDO("mysql:dbname=db_test;host=localhost", "root", "admin");
$st = $pdo->prepare("UPDATE tbl_test SET 氏名 = :name, 住所 = :addr WHERE 番号 = :id");
$st->bindValue(':name', $_POST['NAME']);
$st->bindValue(':addr', $_POST['ADDR']);
$st->bindValue(':id', $_POST['ID']);
$st->execute();
}catch(PDOException $e){
echo $e->getMessage();
exit;
}
ありがとうございます
順序が違ってました。
ここから氏名と住所が空白だったらエラーメッセージを出したいのでがtryで出せばいいですか
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「include()」関数の使い方につ...
-
php 完了画面の送信メールのコ...
-
TCPDFについて
-
CFileDialogの最初のディレクト...
-
フォントの色を変えるには?
-
onedrive にexcelファイルをア...
-
phpのftp_get()でエラーが出ます。
-
phpでget_headers()が使えない?
-
Content-Typeが機能していない?
-
awsにApacheとPHPを入れて、何...
-
XAMPPでApacheが起動しなくなり...
-
PHPのif文でその処理を途中で抜...
-
ワードプレスサイト PHP8.0.25...
-
拡張子php画像をjpg画像等に変...
-
mb_send_mail関数が利用出来ない
-
正規表現での最後尾のバックス...
-
Cronで同じ処理を複数同時に実...
-
HTMLに埋め込んだPHPがうまく出...
-
.phpと.incファイルの違いはな...
-
HPの更新をしたら自動でメール...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
php で C言語のdefineマクロの...
-
PHP MySql ページング
-
BASIC認証のユーザー名をPHPで...
-
特定の値をPOST送信で他のサー...
-
cakephpのサブタイトルはどこで...
-
PHPのタイムアウトについて
-
simplexml_load_file で呼び出...
-
phpのエラーについて
-
同一ディレクトリの連番ファイ...
-
PHPでxmlファイルへのデータの...
-
PHPとHTMLをまとめてコメントア...
-
DBから取得した内容を横表示
-
「include()」関数の使い方につ...
-
home_urlとbloginfo('url')
-
Nowdocの機能をphp5.2で使いたい
-
onedrive にexcelファイルをア...
-
フォントの色を変えるには?
-
index.phpに入るには、どうすれ...
-
PHPのif文でその処理を途中で抜...
-
FTPコマンドでディレクトリごと...
おすすめ情報