phpからCSVに吐き出して重複チェックを考えていたのですが
大変そうなので、mysqlを導入し、php+mysqlで重複チェックを行なうことにしました。
nameをユニークインデックスにしたところ
同じ名前は登録されなくなったのですが
できれば、「その名前は登録済みです!」と表示させたいです。
エラーコードかなにかを使って
判断するのでしょうか?
以上、宜しくお願いいたします。
-----文字数の関係で一部削除しております。-----
<?php
//DBへ接続開始
$link = mysqli_connect($host, $user, $password, $database);
if (!$link)
{
print("接続できませんでした");
exit();
}
/* 文字セットを utf8 に変更します */
mysqli_set_charset($link, "SJIS");
//オートコミットOFF
mysqli_autocommit($link, FALSE);
// ステートメントの設定
$sql = 'INSERT INTO not_schoolmate (id,name,) VALUES(?,?)';
$stmt = mysqli_prepare($link, $sql);
mysqli_stmt_bind_param( $stmt,"ss", $id, $name );
// 値設定
if($errflg == 0){
$id = $_POST["id"];
$name = $_POST["name"];
//SQL文を実行する
mysqli_stmt_execute($stmt);
//コミットする
mysqli_commit($link);
//ステートメントクローズ
mysqli_stmt_close($stmt);
?>
No.4
- 回答日時:
No.3
- 回答日時:
>$sql = 'INSERT INTO not_schoolmate (id,name,) VALUES(?,?)';
2個所怪しい点があります。
・nameの後ろのカンマがいりません
・nameが文字列だとしたら、VALUESで与えるデータがきちんとエスケープされているか
くわえてクォーテーションで囲まれていますか?
確認したところ、nameの後ろにカンマは入っていませんでした。
nameは入力フォームから受け取ったデータとなります。
エスケープされているか
どのように確認すれば宜しいでしょうか?
No.2
- 回答日時:
#1さんのほかには
INSERT IGNORE INTOでデータを投入し、
mysql_affected_rowsでチェックすればよいかと
(戻り値が1なら投入された、0ならすでにデータが存在する)
http://php.net/manual/ja/function.mysql-affected …
ご連絡ありがとうごさいます。
$sql = 'INSERT INTO not_schoolmate (id,name,) VALUES(?,?)';
の下に以下を入れてみたのですがエラーになってします。
記述場所が悪いのでしょうか?
文法的な問題でしょうか?
$test = mysqli_affected_rows();
if($test == 0){
echo "そのアカウントは既に登録されています。<BR>";
$errflg = "1";
}else{
echo "そのアカウントは登録されていません。";
}
以上、宜しくお願いいたします。
No.1ベストアンサー
- 回答日時:
こんにちは。
insertしてみてのエラーを拾っても良いですし、登録前にselectしてみてレコードが取得できたらエラーでも良いと思います。
この回答への補足
とりあえず、以下で対応できました。
//重複チェック
$account = $_POST["name"];
$sql = 'select * from xxxxxx where name = "'.$name.'";';
$rs = mysqli_query($link, $sql);
$rows = mysqli_num_rows($rs);
if($rows == 0){
}
else
{
echo "交付申請に失敗しました。<BR><BR>";
echo "【".$name."】は既に登録されています。<BR>";
$errflg = 1;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- PHP php エラー 2 2022/10/23 16:43
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画像が表示出来ません。
-
foreachがうまく動かない
-
ファイル名を変更してアップロ...
-
PHPで入力フォームでデータを確...
-
XMLをツリー形式で表示
-
PHPからデータベースの該当行を...
-
フォームでのリセットを使う方法
-
PHP ボタンが押されたら処理を...
-
フォーム送信後の更新ボタンで...
-
ラジオボタンをsessionで使いたい
-
HTMLで前の画面に戻る時、入力...
-
検索時の選択内容を保持する方法
-
<input type="hidden" >で配列...
-
ラジオボタンを押すと、表示が...
-
【HTML(PHP?)】複数のフォーム...
-
プルダウンとCSVの連動
-
POSTの値を配列として受け取っ...
-
PHPで、ボタンを押すと同じペー...
-
アマゾンのような評価の星を選...
-
フォームへの前回入力値をクリ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
重複を防ぐ記述について教えて...
-
VBA で、スペースを含むファイ...
-
PHPで入力フォームでデータを確...
-
Flaskでサーバー立ち上げに関して
-
phpで変数を使ってcopyできない
-
ファイル名を変更してアップロ...
-
PHPからHTMLへの変数の受け...
-
$_SESSIONに渡した後はそのまま...
-
テキストボックスの値を取得したい
-
openCVのトラックバーについて
-
scanfでの読み込み文字数制限
-
アップロードファイル名の文字化け
-
PHP MySql 画像を取得
-
Fortranでのファイル名操作につ...
-
ポインタ配列をfscanfで読み込...
-
UPDATEできない
-
WordのIDataObject::GetData呼...
-
C# 同じ処理をまとめたい
-
POSTの項目に追加
-
イタリア人がCatherineと聞いた...
おすすめ情報