[PHP-users 20225]mySQLに接続して指定テーブルのフィールド数を得られない

齊藤 智宏 xaitoh_php @ yahoo.co.jp
2004年 2月 4日 (水) 04:06:42 JST


齊藤と申します。
PHPからmySQLに接続して指定テーブルのフィールド数を得る、というだけの
処理が出来なくて悩んでおります。
マシン構成・設定などは以下の通りです。

●サーバーマシン構成
PHP Version 4.3.4
Apache/2.0.48
FreeBSD 4.8-RELEASE
一般的なパソコン


以下ソースです。
※データベースdb01に既にテーブル作成済み・データ入力済みという前提
 データベースの作成・データの入力にはWindowsのツールを使用。
---test.php---
<?php

include "./common.inc";
include "./DbConnect.inc";

echo "ユーザー名 : ";
echo DB_USER;
echo "<BR>";
echo "パスワード : ";
echo DB_PASS;
echo "<BR>";
echo "ホスト名 : ";
echo DB_DOMAIN_NAME;
echo "<BR>";
echo "データベース名 : ";
echo DB_NAME;
echo "<BR>";

$sql = "SELECT * FROM user";
DbConnect_MYSQL($sql);
$AllFields = mysql_num_fields($result);
echo "全フィールド数は、".$AllFields."でした。<BR>";

echo "</BODY></HTML>";
exit;
?>


---common.inc---
<?php
define( "DB_DOMAIN_NAME", "localhost" );
define( "DB_NAME", "db01" );
define( "DB_USER", "hoge");
define( "DB_PASS", "hogedayo");
?>


---DbConnect.inc---
<?php
function DbConnect_MYSQL($sql) {
   global $result;
	$con=mysql_connect(DB_DOMAIN_NAME,DB_USER,DB_PASS);
	if($con==false){
			print("データベースに接続できませんでした。\n");
		exit;
		}
		else{
			print ("データベースに接続しました。<br><br>\n");
			print ("conは、 $con でした。<BR>\n");
		}

	$db=mysql_select_db(DB_NAME,$con);
	if($db==false){
			print("データベース名の取得に失敗しました。\n");
		exit;
		}
		else{
			print ("データベースの取得に成功しました。<br><br>\n");
			print ("dbは、 $db でした。<BR>\n");
		}


	$result=mysql_query($sql,$con);
	if ($result == false){
		printf("sql:\"$sql\"の実行に失敗しました。\n");
		//exit;
		//エラーメッセージを見るためにコメントアウトしました。
		}

	//mysql_close ($con);
	//return $result;
}
?>


実行し、ブラウザの結果表示を見ると
-----------------------------
ユーザー名 : hoge
パスワード : hogedayo
ホスト名 : localhost
データベース名 : db01
データベースに接続しました。

conは、 Resource id #5 でした。
データベースの取得に成功しました。

dbは、 1 でした。
sql:"SELECT * FROM user"の実行に失敗しました。 
Warning: mysql_num_fields(): supplied argument is not a valid MySQL result resource in /usr/local/apache2/htdocs/test.php
on line 48
全フィールド数は、でした。
----------------------------

上記のようになりました。
英語理解力がないので、エラーメッセージをエキサイト翻訳にかけると、
「供給された議論はaaaaの中の有効なMySQL結果資源ではありません。」
※aaaaはinの後のパスと思って解釈
…余計に分からなくなりました。。。

基本的な事なので、過去に同じ質問が上がっている、又は基本的すぎるゆえに
他サイトにいくらでも解決策は載っている、と思ったのですが、見つける事が
できませんでした。ただ、
http://ns1.php.gr.jp/pipermail/php-users/2002-June/008010.html
上記質問がかなり近い内容だと思ったのですが、解決に至ったのかが不明です。
同じようにエラーメッセージを表示させてみたりしたのですが、結果は上記通り
で分かりませんでした。

どなかたご存知の方おりましたらご教授ください。

よろしくお願いします。


---------------------------------------------------------------------------
齊藤 智宏
xaitoh_php @ yahoo.co.jp




__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!
http://bb.yahoo.co.jp/



PHP-users メーリングリストの案内