
No.1ベストアンサー
- 回答日時:
やり方は2つ
1つは先に select してみてデータが有ればエラーメッセージを表示する。
もう1つは insert してみてエラーが返ってきたら、DBのエラー内容を解読してページにエラーメッセージを表示する。
この回答への補足
すいません間違えました
こちらが新規登録のphpです
<html>
<body>
<blockquote>
<?php
$con=mysqli_connect("localhost","root","admin","db_test");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
if ($_POST['ID'] != '' && $_POST['NAME'] != '' && $_POST['ADDR'] != '')
{
$id = mysqli_real_escape_string($con, $_POST['ID']);
$name = mysqli_real_escape_string($con, $_POST['NAME']);
$addr = mysqli_real_escape_string($con, $_POST['ADDR']);
$sql="INSERT INTO tbl_test (番号, 氏名, 住所) VALUES ('$id','$name','$addr')";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo "登録完了しました";
} else {
echo "<br>番号が既に登録されている番号か<BR>またはデータが未入力の箇所があります。すべてデータを入力してください";
}
mysqli_close($con);
?>
<br><br><br>
<a href="http://localhost/regist.php">
<INPUT TYPE = "button" VALUE = "登録画面に戻る" style ="font-size:20px; WIDTH: 140px; HEIGHT: 40px"></A>
<br><br><br>
<A HREF="http://localhost/top.php">
<INPUT TYPE = "button" VALUE = "一覧に戻る" style ="font-size:20px; WIDTH: 140px; HEIGHT: 40px"></A>
</blockquote>
</body>
</html>
ありがとうございます
下記は更新画面になります
こちらのプログラムをアップデートphpに送っています
<head>
<body>
<blockquote>
<br><br>
更新画面
<br><br><br>
<?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="update.php" method="post">
番号 <?php echo $ID ?><br><br><br>
<input type="hidden" name="ID" value="<?php echo $ID; ?>">
氏名
<input type="text" size = "50" name="NAME" value="<?php echo $NAME ?>"><br><br><br>
住所
<input type="text" size = "130"name="ADDR" value="<?php echo $ADDR ?>"><br><br><br>
<BR><BR>
<input type="submit" value = "更新する" style ="font-size:20px; WIDTH: 100px; HEIGHT: 40px">
<A HREF="http://localhost/top.php">
<INPUT TYPE = "button" VALUE = "一覧に戻る" style ="font-size:20px; WIDTH: 140px; HEIGHT: 40px"></A>
update.phpです
<html>
<body>
<blockquote>
<?php
$err = "";
if(empty($_POST['NAME'])) $err.= "<br><br>名前を入力してください。<br><br>";
if(empty($_POST['ADDR'])) $err.= "<br><br>住所を入力してください。<br><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']));
echo "<br><br>レコードを修正しました<br>";
}else{
echo $err;
}
?>
<br><br><br> <a href="http://localhost/top.php">
<input type = "submit" value = "一覧に戻る" style ="font-size:20px; WIDTH: 150px; HEIGHT: 40px"></A>
</blockquote>
</body>
</html>
どんな感じに書けばいいですか?
No.2
- 回答日時:
insert ignore into でデータを投入して、
php側でaffected_rows()やrowCount()で作用した行数を数え
0だった場合にメッセージをだせばいいのでは?
この回答への補足
すいません間違えました
こちらが新規登録画面です
<html>
<body>
<blockquote>
<?php
$con=mysqli_connect("localhost","root","admin","db_test");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
if ($_POST['ID'] != '' && $_POST['NAME'] != '' && $_POST['ADDR'] != '')
{
$id = mysqli_real_escape_string($con, $_POST['ID']);
$name = mysqli_real_escape_string($con, $_POST['NAME']);
$addr = mysqli_real_escape_string($con, $_POST['ADDR']);
$sql="INSERT INTO tbl_test (番号, 氏名, 住所) VALUES ('$id','$name','$addr')";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo "登録完了しました";
} else {
echo "<br>番号が既に登録されている番号か<BR>またはデータが未入力の箇所があります。すべてデータを入力してください";
}
mysqli_close($con);
?>
<br><br><br>
<a href="http://localhost/regist.php">
<INPUT TYPE = "button" VALUE = "登録画面に戻る" style ="font-size:20px; WIDTH: 140px; HEIGHT: 40px"></A>
<br><br><br>
<A HREF="http://localhost/top.php">
<INPUT TYPE = "button" VALUE = "一覧に戻る" style ="font-size:20px; WIDTH: 140px; HEIGHT: 40px"></A>
</blockquote>
</body>
</html>
結構大変ですかね?
ありがとうございます
下記は更新画面になります
こちらのプログラムをアップデートphpに送っています
<head>
<body>
<blockquote>
<br><br>
更新画面
<br><br><br>
<?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="update.php" method="post">
番号 <?php echo $ID ?><br><br><br>
<input type="hidden" name="ID" value="<?php echo $ID; ?>">
氏名
<input type="text" size = "50" name="NAME" value="<?php echo $NAME ?>"><br><br><br>
住所
<input type="text" size = "130"name="ADDR" value="<?php echo $ADDR ?>"><br><br><br>
<BR><BR>
<input type="submit" value = "更新する" style ="font-size:20px; WIDTH: 100px; HEIGHT: 40px">
<A HREF="http://localhost/top.php">
<INPUT TYPE = "button" VALUE = "一覧に戻る" style ="font-size:20px; WIDTH: 140px; HEIGHT: 40px"></A>
update.phpです
<html>
<body>
<blockquote>
<?php
$err = "";
if(empty($_POST['NAME'])) $err.= "<br><br>名前を入力してください。<br><br>";
if(empty($_POST['ADDR'])) $err.= "<br><br>住所を入力してください。<br><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']));
echo "<br><br>レコードを修正しました<br>";
}else{
echo $err;
}
?>
<br><br><br> <a href="http://localhost/top.php">
<input type = "submit" value = "一覧に戻る" style ="font-size:20px; WIDTH: 150px; HEIGHT: 40px"></A>
</blockquote>
</body>
</html>
どんな感じに書けばいいですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「1004:アプリケーション定義...
-
『ORA-00936: 式がありません。...
-
オラクル(PL/SQL)のエラー
-
Access2010実行時エラー-21473525
-
PL/SQL ORA-06502エラーに関し...
-
asp sqlのselect文について
-
AccessVBA 実行時エラー'2766'...
-
空白はダメというエラーの表示...
-
Pro*で副問い合わせができない
-
CREATE PROCEDUREで
-
ACCESSでエラー時に再起動する方法
-
アクセスでのエラーについて
-
UPDATEを使ったSQL文にて
-
実行時エラー459 withステート...
-
一般的なネットワークエラーに...
-
SQL*Loaderで「オブジェクトが...
-
DocuWorksでの印刷
-
SQLサーバー2012 アンインスト...
-
AccessのMDBのオープンエラーに...
-
SQLiteで全文検索はANDできない?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
オラクル(PL/SQL)のエラー
-
アクセスでエラー このフィー...
-
SQLserver2005 nvarchar を flo...
-
AccessVBA 実行時エラー'2766'...
-
#1062 - '0' は索引 'PRIMARY' ...
-
DocuWorksでの印刷
-
列名に変数を使うことはできな...
-
Access2010実行時エラー-21473525
-
空白はダメというエラーの表示...
-
SQL*Loaderで「オブジェクトが...
-
Transact-SQLのBULK INSERTでエ...
-
UPDATEを使ったSQL文にて
-
MySQLでcreateが使えない MySQL...
-
エラーについて
-
PL/SQL ORA-06502エラーに関し...
-
オラクルでisnumeric?
-
Access 実行時エラー'3075' 対...
-
SQLCODE=-420とはどういうエラ...
-
ACCESSでエラー時に再起動する方法
-
BULK INSERTのエラー取得は可能...
おすすめ情報