[解決済み] sql - if exists update else insert into
2023-04-04 02:02:20
質問
私が行おうとしていることは
INSERT
の購読者がデータベースに登録されていますが
IF EXISTS
にする必要があります。
UPDATE
の行を
ELSE INSERT INTO
は新しい行です。
もちろん、私はまずデータベースに接続し
GET
は
$name
,
$email
と
$birthday
をURLの文字列から削除します。
$con=mysqli_connect("localhost","---","---","---");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$name=$_GET['name'];
$email=$_GET['email'];
$birthday=$_GET['birthday'];
これは動作しますが、新しい行が追加されるだけです。
mysqli_query($con,"INSERT INTO subs (subs_name, subs_email, subs_birthday)
VALUES ('$name', '$email', '$birthday')");
mysqli_close($con);
試してみたのはこんな感じです。
mysqli_query($con,"INSERT INTO subs (subs_name, subs_email, subs_birthday)
VALUES '$name', '$email', '$birthday'
ON DUPLICATE KEY UPDATE subs_name = VALUES($name), subs_birthday = VALUES($birthday)");
mysqli_close($con);
と
mysqli_query($con,"IF EXISTS (SELECT * FROM subs WHERE subs_email='$email')
UPDATE subs SET subs_name='$name', subs_birthday='$birthday' WHERE subs_email='$email'
ELSE
INSERT INTO subs (subs_name, subs_email, subs_birthday) VALUES ('$name', '$email', '$birthday')");
mysqli_close($con);
と
mysqli_query($con,"IF NOT EXISTS(SELECT * FROM subs WHERE subs_email='$email')
Begin
INSERT INTO subs (subs_name, subs_email, subs_birthday)
VALUES ('$name', '$email', '$birthday')
End");
mysqli_close($con);
しかし、どれもうまくいきません。何か間違ったことをしているのでしょうか?
どんな助けでも大いに感謝します。
どのように解決するのですか?
-
を作成します。
UNIQUE
制約 をあなたのsubs_email
カラムに、もしまだ存在しないのであればALTER TABLE subs ADD UNIQUE (subs_email)
-
使用方法
INSERT ... ON DUPLICATE KEY UPDATE
:INSERT INTO subs (subs_name, subs_email, subs_birthday) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE subs_name = VALUES(subs_name), subs_birthday = VALUES(subs_birthday)
UPDATE句でVALUES(col_name)関数を使用すると、INSERT ... ONのINSERT部分からカラムの値を参照することができます。 INSERT ... ON の INSERT 部分からカラム値を参照することができます。 重複キー更新 dev.mysql.com
- 文字列リテラルの代わりにパラメータ・プレースホルダを使っていることに注意してください。 本当に にはパラメータ化されたステートメントを使うべきでしょう。 SQL インジェクション攻撃に対する防御 .
関連
-
[解決済み] ユニークなテーブル/エイリアスではない
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] SQLテーブルで重複する値を検索する
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] ...値に挿入する ( SELECT ... FROM ... )
-
[解決済み] MySQLテーブルへの挿入または存在する場合の更新
-
[解決済み] "INSERT IGNORE" vs "INSERT ... ON DUPLICATE KEY UPDATE"
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MySQLのLike演算子に関する詳細
-
SQL集計、グループ化、ソート
-
mysqlのデータ圧縮性能比較 詳細
-
MySQLインストールチュートリアル(Linux版
-
[解決済み】マルチパート識別子をバインドできない
-
sql エラーを解決する オペランドには1つの列が含まれている必要があります。
-
[解決済み] どのトランザクションが「テーブルメタデータのロック待ち」状態を引き起こしているかを確認するにはどうすればよいですか?
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] MySQLテーブルへの挿入または存在する場合の更新