• ベストアンサー

MySQLで戻り値が重複している

PHPとMySQLを使っています。 下のようなSQL文を作成し、値を引き出そうとしています。 <SQL文> SELECT * FROM table_name WHERE A = "あ" AND B='い' <DBに登録済みの取り出したいデータ> あ、い、う、え、お ところが、戻ってくる値が、 あ、あ、い、い、う、う、え、え、お、お のように、値が重複して戻ってきます。 いろいろ調べましたが、原因がさっぱりわかりません。 ご存知の方、教えていただけると助かります。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.3

マニュアル読みましょう。 http://jp.php.net/manual/ja/function.mysql-fetch-array.php 「連想配列、添字配列、またはその両方として結果の行を取得する」 デフォルトは、両方です。つまり一つのカラムについて、カラム名キーと数値添え字キーと2つ取得されます。var_dump($cols) してみるとわかります。 join 用なら、数値添え字のみで十分なので、mysql_fetch_arrayの第2引数に MYSQL_NUM を指定するか、mysql_fetch_row()を使うとよいです。

hetami
質問者

お礼

ありがとうございます。

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>$rst=mysql_query($sql); >$cols=mysql_fetch_array($rst); >$return = join(",",$cols); えーと、これでダブルのはSQL文の問題でしょうね? SELECT * FROM ・・・ としているなら SELECT カラム1,カラム2,カラム3・・・ FROM ・・・ のようにカラム名を列記してみてください (SELECT文でJOINをした項目がダブっているとかその辺が怪しい)

hetami
質問者

お礼

何度もすみません。 *の部分を、a1,a2,a3...としてみましたが、結果は同じでした。 phpMyAdminで発行したSQLを入れても、問題は起こらず、普通に1行だけ出てきます。 やはりPHPの部分に問題がありそうなのですが、SQL文の定義の個所を除くと、 $rst=mysql_query($sql); $cols=mysql_fetch_array($rst); $return = join(",",$cols); print $return; ここ以外に原因となる個所もなさそうです。 しかし、問題があるようには見えません・・・ うーん・・・自分でももう少し調べてみます。 ありがとうございました。 もし何かご存じの方がいらっしゃいましたら、引き続き回答を頂けると幸いです。 すみませんが、よろしくお願い致します。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

たんにダブって登録されているのでは? SELECT count(*) FROM table_name WHERE A = 'あ' AND B='い' としてみて2つ以上になっていればそうです。 また一つしかないのであればデータの取り出し方になんらかの ミスがあるような気がします

hetami
質問者

お礼

ありがとうございます。 データは1つしかないようです。 以下のように取り出していますが、問題はあるでしょうか。 $rst=mysql_query($sql); $cols=mysql_fetch_array($rst); $return = join(",",$cols); $returnをprintして、値の確認をしています。

関連するQ&A