データベースを、phpを使ってCSVに出力したいです。

php初心者です。

http://php.eweb-design.com/0303_dl.php
こちらのサイトを参考にして作ってみたのですが、
●●●の箇所のみ下記の通り変更しましたが、エラーが出ます。

<?php header("Content-Type: application/octet-stream"); ?>
<?php header("Content-Disposition: attachment; filename=output.csv"); ?>
<?php
$srv = "●●●"; // サーバー名
$id = "●●●"; // ユーザーID
$passwd = "●●●"; // パスワード
$dbn = "●●●"; // データベース名
$sql = "SELECT * FROM sample2"; // SQL文

$db=mysql_connect($srv,$id,$passwd);
mysql_select_db($dbn,$db);
$rs=mysql_query($sql,$db);
for($i=0; $i<mysql_num_fields($rs); $i++){
print(mb_convert_encoding(mysql_field_name($rs,$i),"SJIS","EUC-JP").",");
}
print("\n");
for($j=0 ;$j<mysql_num_rows($rs); $j++) {
for($k=0; $k<mysql_num_fields($rs); $k++) {
$str=mysql_result($rs,$j,$k);
print(mb_convert_encoding($str,"SJIS","EUC-JP").",");
}
print("\n");
}
mysql_close($db);
?>

下記のエラーです。
Warning: mysql_num_fields(): supplied argument is not a valid MySQL result resource in /home/mamocar/www/master/ecar.php on line 13

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/mamocar/www/master/ecar.php on line 17

どのようにしたら解決出来ますか?

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2011/09/02 16:28:53
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:nattow No.2

回答回数102ベストアンサー獲得回数27

ポイント81pt

文字化けの件についてです

いろいろ確認したい項目がありますが・・・

とりあえず mb_convert_encoding をせずに出力するとどうなりますか?

要するに、print のところを

print(mysql_field_name($rs,$i).",");

print($str.",");

に変更すると文字化けの状態はどうなりますか?

id:matun55

sample2というテーブルは存在しませんでしたので、正しいテーブル名に変更したら解決しました。

もうひとつ教えてください。文字化けしているのですが、どこにどのように指定したらいいですか?

当サーバーの情報

データベース バージョン MySQL 4.0

データベース 文字コード EUC-JP(ujis)

2011/09/01 20:11:45

その他の回答1件)

id:nattow No.1

回答回数102ベストアンサー獲得回数27

ポイント19pt

SQL 文がおかしいときなどに出るエラーが出ているようです。

sample2 というテーブルは存在しますか?

id:matun55

sample2というテーブルは存在しませんでした。

直したところ、解決出来ました。

もうひとつ教えてください。文字化けしているのですが、どこにどのように指定したらいいですか?

当サーバーの情報

データベース バージョン MySQL 4.0

データベース 文字コード EUC-JP(ujis)

2011/09/01 18:40:25
id:nattow No.2

回答回数102ベストアンサー獲得回数27ここでベストアンサー

ポイント81pt

文字化けの件についてです

いろいろ確認したい項目がありますが・・・

とりあえず mb_convert_encoding をせずに出力するとどうなりますか?

要するに、print のところを

print(mysql_field_name($rs,$i).",");

print($str.",");

に変更すると文字化けの状態はどうなりますか?

id:matun55

sample2というテーブルは存在しませんでしたので、正しいテーブル名に変更したら解決しました。

もうひとつ教えてください。文字化けしているのですが、どこにどのように指定したらいいですか?

当サーバーの情報

データベース バージョン MySQL 4.0

データベース 文字コード EUC-JP(ujis)

2011/09/01 20:11:45
  • id:nattow
    No.2 に追記しました。
    文字化けの問題についてはそちらをご確認ください。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません