
別のプログラムで変数に値を渡して、その変数に入っている値(文字)をデータベースに入力するプログラムを作っています。
見ての通りCDのデータベースを作るプログラムです。
複雑なプログラムではないのですが
下記のようにプログラムを実行するとselect文で結果を確認した所
仮に繰り返し回数($t)が3だとして
A、A-2、A-3、A-4
B、B-2、B-3、B-4
C、C-2、C-3、C-4
となるはずが、上記と同じデータが
A、A-2、A-3、A-4
B、B-2、B-3、B-4
C、C-2、C-3、C-4
A、A-2、A-3、A-4
B、B-2、B-3、B-4
C、C-2、C-3、C-4
A、A-2、A-3、A-4
B、B-2、B-3、B-4
C、C-2、C-3、C-4
のように同じデータがそれぞれ2つずつ重複して入力されているのです。
2回目のprint文を見ると正しく表示されているのですが、データベースのほうは重複しているようです。
こちらに問題がないようなら変数受け渡しの部分も見せますので
どなたか問題を見つけてくださらないでしょうか。お願いします。
$DBSERVER = "localhost"; //MySQLサーバ名
$DBUSER= "root"; //ログインユーザ名
$DBPASSWORD = ""; //パスワード
$DBNAME = "cdb"; //データベース名
//MySQLに接続します
$con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD);
//MySQL読み込み時の文字コードを設定
mysql_query("set name sjis");
//データベースに接続します
$selectdb = mysql_select_db($DBNAME);
print("以下のデータを入力しました</BR>");
for($i=0;$i<$t-1;$i++){
$name=$cd[$i][0];/*array[]になるので入れ直し*/
$name=mb_convert_kana($name , "a","sjis");
$artist=$cd[$i][1];
$artist=mb_convert_kana($artist , "a","sjis");
$day=$cd[$i][2];
$record=$cd[$i][3];
$record=mb_convert_kana($record , "a","sjis");
$sql="insert into co2 values('0','$name','$artist','$day','$record')";
print("曲名: ".$name."</BR>"."歌手名: ".$artist."</BR>"."発売日: ".$day."</BR>"."レコード会社: ".$record."</BR></BR>");
mysql_query($sql);
}
No.3ベストアンサー
- 回答日時:
ANo.1です。
制約とは大雑把に言うと、格納されるデータを制限するものです。
制約と言ってもいくつかあるわけですが、本件ではUNIQUE制約(一意性制約)を指しています。
何を以って一意であるとするかは設計次第です。
一意性制約
http://ja.wikipedia.org/wiki/%E4%B8%80%E6%84%8F% …
本題に入ります。
プログラムを何回も実行しているということですが、一回実行する度にテーブルの内容を確認しているのでしょうか。
改めて検証するために一旦テーブルを空にした後、一回だけプログラムを実行して結果を確認するのが良いと思います。蛇足ですが、ブラウザで検証しているのだと思いますので、くれぐれも更新ボタンを押すなどページの更新は行わないようにしましょう。
No.2
- 回答日時:
ソースの記載範囲内だけでは多重に同じデータを書きこむ部位はなさそうですので、他のスクリプトでここの部位を複数コールしたか、同じソフトを複数回繰り返したのだと思います。
同じデータが複数書込みができること自体が問題だとすると、それなりのテーブルの作り方にしておかないと問題がありそうですね。
テーブルで工夫が出来ないのなら、
merge(Oracle) か replace(MySQL) などで書き込むのも良いのでは?
遅れてしまって申し訳ないです。
replace文ですか。PRYMARYキーを曲名に設定すればいいのですかね。
ありがとうございます。試してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- PHP PHP MySql ページング 2 2022/09/20 06:38
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- MySQL 共通点はあります。何が違うのでしょうか? 1 2023/01/27 05:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPでデータベースに正しく入力...
-
プライベート機能の作成
-
SQLで。
-
リストボックスについて
-
internal server error時の回避
-
AUTO_INCREMENTを2つ設定する方法
-
PHPデータベース・テーブルの移行
-
文字化けするのはなぜですか
-
配列で指定した値のみをMySQLか...
-
チェックボックスによる複数の...
-
データベースに存在するデータ...
-
JAVA SQLServerException 列名 ...
-
phpで以下のようにHTMLで出力さ...
-
チェックボックスの値の受け渡し
-
PHP+MySQL テーブルが表示され...
-
テーブル<TR></TR>の処理について
-
データベースのページング出力...
-
phpからdbへアクセスし、レコー...
-
【至急】MySQLのエラーを解消し...
-
MySqlに、\\'の2つを含む文字を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MySQLでデータベースにデータin...
-
csvをDBへ読み込んだら、NULLが...
-
ヒアドキュメントでSQLを書く事...
-
access → Oracleへのデータ移...
-
PHPでいいね機能を作りたいので...
-
OracleからAccessへのインポート
-
変数にNULLを代入したい
-
DB Error: no such field
-
カラムにデータがあるかないか...
-
MDB2エラーが対応出来ません。
-
phpでテーブルを作る際変数によ...
-
phpにて出欠登録管理を作成して...
-
Accessへ日付をINSERT
-
mysql+php 日付別料金データで...
-
データをDBからひっぱってき...
-
MySQLのテーブル選択について
-
クエリObjectをforeachで回す時...
-
php sqlite count 列数取得
-
会員番号等に利用するダブらな...
-
エクセルをMysqlに格納
おすすめ情報