
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.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;
}
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 "そのアカウントは登録されていません。";
}
以上、宜しくお願いいたします。
お探しの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ランキング
-
phpの問い合わせフォームを作っ...
-
PHP8でWarning:Undefined varia...
-
composerをインストールしたい...
-
フォームで戻った際に入力済み...
-
php テーブルが作成できない
-
複数のパソコンの中の1つのパソ...
-
ゆゆにゃ。
-
プログラミング言語で、使える...
-
なんでブラウザでPHPを動かすた...
-
アップロードファイルを表示す...
-
PHPでこのコード自体に意味は無...
-
MySQLの配置が変わったため、db...
-
入力フォームの空白や改行を制...
-
$_SESSIONについて教えて下さい。
-
php でqiitaのサイトにあったフ...
-
返信機能のツリー構造の深さを...
-
PHPについて。
-
PHPからCSVをアップロード後、m...
-
[php初心者]サイトを見てデータ...
-
こちらはただの直列処理ですか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA で、スペースを含むファイ...
-
Flaskでサーバー立ち上げに関して
-
POSTの項目に追加
-
PHPでParse errorについて
-
ファイル名を変更してアップロ...
-
header()関数について
-
sqlite文字列を格納、出力
-
phpで変数を使ってcopyできない
-
初心者です。入力フォームのp...
-
重複を防ぐ記述について教えて...
-
scanfでの読み込み文字数制限
-
$_SESSIONに渡した後はそのまま...
-
PDO学び始めました
-
PHP MySql 画像を取得
-
php、sqlite3にデーター追加で...
-
if function PHP
-
複数条件での検索について教え...
-
$_REQUESTの意味を教えて下さい
-
Emacs Lisp: 関数に引数が渡せ...
-
php+mysqlでの重複チェックにつ...
おすすめ情報