• 締切済み

php エラー

insert ignoreを使い、主キーに重複したのを無視しているのですが、重複したらエラ-をだしもういちど入力させるにはどうしたらいいですか?

noname#197690
noname#197690
  • PHP
  • 回答数1
  • ありがとう数1

みんなの回答

回答No.1

・insert ignoreとは何ですか ・主キーとは何の話ですか ここのカテゴリはPHPなので,PHP以外の要件が関わってくる話であれば, その要件についてちゃんと提示して下さい。

noname#197690
質問者

お礼

すいませんでした

関連するQ&A

  • 同じデータをinsertしないようにするには?

    1222 1222 1223 1234 1234 のような カラムに重複するような要素を含む、整理番号が入っていています。 このカラムに、番号が一つでも一致すれば、インサートしない、 つまり、1200という数字をインサートしようとしたとき そのカラムのすでにどこかしらに1200という数字が入っていれば インサートしないという風にしたいのです。 SELECTでいったん呼び出して、 if($〇〇が一件もなければ・・・){ $sql = "インサート"; } という方法を今までとっていたのですが、 もっと良い方法があるのではないかと色々調べたところ INSERT IGNOREというものがあることを知りました。 どうやらこれは、主キー、ユニークキーに限られたもので 今回のような重複する要素を含むカラムには使えない感じでした。 今回のような重複する要素を含むカラムに対して インサートの条件制御を行うことをINSERT文上で行うことは可能なのでしょうか? 可能であるとすれば、どのような記述でそれを実現することができるのでしょうか?

    • ベストアンサー
    • MySQL
  • ERROR1062:Duplicate entry.....というエラーが出てしまいました

    いつもお世話になります。 データベースからSELECTで抽出したデータを別のテーブルにINSERTするSQLを実行したのですが、 ERROR1062:Duplicate entry.....というエラーが出てしまいました。 お詳しい方がいらっしゃいましたら、アドバイスをいただけませんでしょうか?よろしくお願いいたします。 【実行したSQL】 INSERT INTO tblA (dataA1, dataA2, dataA3, dataA4) SELECT "9001","AA",dataB1,dataB2 FROM tblB WHERE dataB1 = 52 tblAの主キー:dataA1とdataA2 tblBの主キー:dataB1 dataA1とdataA2はtblAの主キーとなっているため、重複してしまうということのようです。tblBの主キーはdataB1であるため、抽出されてくるデータは常に1件なので問題ないと期待していましたが、甘くなかったようです。何か良い方法はないものでしょうか?よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • BULK INSERTのエラー取得は可能なのでしょうか?

    こんばんは。 お世話になります。 SQL Server初心者です。 現在、CSVファイルに出力された他のデータベース(Paradox)のデータをSQL Server2005に移行するためのツールを作成しています。 Paradoxでは、以下のように、(1)と(2)のレコードが存在した場合、重複エラーとならなかったのですが、SQL Serverでは、当然ながら、重複エラーとなってしまいます。  (1)aaaaa, 1, あいうえお  (2)AAAAA, 1, かきくけこ  ※aaaaaとAAAAAが主キーの場合 CSVファイルのレコードは、多いもので700万件も含まれ、これを1行読み込み、既存データか否かをチェックし、既存の場合はINSERTしないという処理を700万回繰り返すと、相当な時間がかかり、性能向上を求められています。 そのため、BULK INSERTを使用する方向で検討してみました。 しかし、CSVファイルに主キー重複したレコードが存在すると、エラーが返されますが、BULK INSERTでは、どのレコードでエラーになったかまでは取得することができません。 ずいぶん、調べてみたのですが、無理のようでした。 BULK INSERTでエラーとなる箇所を特定する方法は本当にないでしょうか? もし、無理ならば、何か他にエラー箇所を特定して速くINSERTするコマンド、方法はないでしょうか? お知恵をお借りしたく、よろしくお願いいたします。

  • accessでのエラー

    Access2000で作られたものなのですが(知人の会社ですでに辞めた人が作ったもの) ハードを2年位前にXPに入れ替えたためAccess2003で使っていました。 受注Noを主キーにして受注管理票と工程管理票を作っているのですが、昨日まで順調に入力できていたのですが今日になって入力完了し登録しようとすると 「インデックス、主キー、またはリレーションシップで値が重複しているので、テーブルを変更できませんでした。重複する値のあるフィールドの値を変更するか、インデックスを削除してください。または重複する値を使用できるように再定義してください。」 とエラー表示され先に進みません。 インデックスや主キー等はいじっていません。 試しに新しくデータを作成し全てインポートしてみたのですが同じ結果でした。 ちなみにデータはコンバートせずに使っていましたが、コンバートしてみても同じでした。 Access2000のCDはどこにあるかわかりませんが2000にしたら治るものなのでしょうか。 仕事に使われているため非常に困っております。 何卒宜しくご教授お願いいたします。

  • PHP Mysql エラー

    データの新規登録を行っているのですが 番号が重複しないでまたデータがすべて入力されたらデータの追加を行いたいのですが エラーが出て対処できずに困っています 下記のエラーがでます Parse error: syntax error, unexpected end of file in C:\WWW\test\htdoes\insert.php on line 20 20行目は一番下の行です <html> <body> <?php $pdo = new PDO("mysql:dbname=db_test;host=localhost", "root", "admin"); if($st->rowCount()>0){ if ($_POST['ID'] != '' && $_POST['NAME'] != '' && $_POST['ADDR'] != ''){ $st = $pdo->prepare("insert ignore into tbl_test values(?,?,?)"); $st->execute(array($_POST['ID'], $_POST['NAME'],$_POST['ADDR'])); header('Location: http://localhost/top.php'); }else{ print データ未入力の場所があります; } }else{ print "既に登録している番号です"; ?> </body> </html>

    • ベストアンサー
    • MySQL
  • access エラーメッセージの変更

    主キーや重複なしのインデックスに設定されているフィールドに対して、既存のレコードと同じデータを入力・保存しようとすると、エラーメッセージが表示されますが、そのメッセージを変更する方法はないでしょうか?

  • FMDBについて

    objective-cでFMDBを採用しています。 新たにレコードをinsertするときに、すでに同じ値のフィールドが存在するときは無視するという風にしたいと思っています。 そこでignoreを用いて NSString *insert = [NSString stringWithFormat:@"insert ignore into search (date, site, title, url) values (%ld, '%@', '%@', '%@')", (long)date, siteName, title, link]; 上記で実行したのですが、 DB Error: 1 "near "ignore": syntax error" このようなエラーがでてしまいます。 FMDBではどうのような記述をすればいいのでしょうか?

  • oracleでのmerge文のようなもの、ないのでしょうか・・・

     いつもお世話になります。  主キーで検索して、あればupdate、なければinsert という処理を行うにあたって、行の挿入と更新を 1回のSQLで行いたいのですが、oracleでいうmerge文のようなものはmysqlではないのでしょうか??  1回で行いたい理由としては、有り無しの調査をしてからInsertするまでの間に他ユーザーが同時実行をして主キー重複が起きないようにです。  マニュアルを見た所、見あたらなかった為、普通にInsert時のエラー処理で、再試行をしようと思っておりますが、皆様どうされてますでしょうか?  他に良い方法があればと思い、投稿させていただいております。    ご教示いただけると嬉しいです。

    • ベストアンサー
    • MySQL
  • 重複なしのフィールドにつき、重複データ挿入時上書きする設定は?

    こんにちは。 主キーないしユニークキーなどで、 重複しない設定にしたフィールドで、 重複データを入力されたとき、 入力できないのではなく、上書きされる、 設定にしたいのですが、 どのような方法が、あるでしょうか。 (いちいち、古いデータを削除しなければ、 ならないのでしょうか。) お願いします。

  • PHP Mysqli関数でエラー情報を取得する

    はじめまして。 PHPから、Mysqli関数を使用して、5000件のinsert文をMySQLサーバーに投げる処理で困っています。 insert文をセミコロン;で接続して、1つのSQL文にして、executeしています。 あるinsert文でエラーが発生した場合、それ以降のSQL文が実行されずに、PHPに戻ってきてしまいます。マルチクエリの挙動としては、この動きはしょうがないのでしょうか? 5000件のうち、複数のエラー(キー重複や、外部参照キーエラー)があった場合、エラーが起きたデータについてはどのようなエラーであったかが取得でき、それ以降のデータについてはinsertが実行できると言う処理をしたいのですが、このような処理は不可能でしょうか。 ちなみにupdateの場合は、更新対象のデータがなかった場合でもエラーとはならないので5000件文の処理が行われます。 環境は、以下です。 OS:FreeBSD6 PHP:PHP5 MySQL:MySQL5.2 よろしくお願いいたします。

    • ベストアンサー
    • PHP