PHPについて次の2つの質問にお答えください。


質問①
スクリプト①と同じ働きをするように、ユーザー定義関数を使って、
スクリプト②を作成しましたが、うまくいきません。
どうやったらよいか教えてください。
なお、スクリプト②を実行すると無限ループしてしまうのでご注意ください。

質問②
「"select * from site"」の「site」を定数にしたいと思い、
「define('TABLES','site');」と定義づけて、
「"select * from "."TABLES"としたのですがうまく行きません。
どうやったらよいか教えてください。


スクリプト①
$db = @mysql_connect(SERVER,USER,PASSWD);
mysql_select_db(DB_NAME);
$result = mysql_query("select * from site");

while ($row = mysql_fetch_array ($result,MYSQL_ASSOC)){
foreach ($row as $val){
echo "<br>".$val;}}


スクリプト②
(注)実行すると無限ループになります。
function mysql_prepared(){
$db = @mysql_connect(SERVER,USER,PASSWD);
mysql_select_db(DB_NAME);
$result = mysql_query("select * from site");
return $result;
}

while ($row = mysql_fetch_array (mysql_prepared(),MYSQL_ASSOC)){
foreach ($row as $val){
echo "<br>".$val;
}}

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

回答2件)

id:JULY No.1

回答回数966ベストアンサー獲得回数247

ポイント35pt

質問①:

while ($row = mysql_fetch_array (mysql_prepared(),MYSQL_ASSOC)){

  foreach ($row as $val){

  echo "
".$val;

}}

mysql_prepared がループの度に実行され、毎度、新しく mysql の接続を

作っているために、無限ループに陥っているのでしょう。

while ループの前で一度、mysql_prepared の戻り値を変数に保存して、

スクリプト②のような呼び出し方にする必要があります。

質問②:

define で定義したものに対して、「"」でくくる必要はありません。

"select * from "."TABLES" では「TABLES」という文字列をつないでいる

ことになります。"select * from " . TABLES で、define した内容の

文字列が繋がります。

id:taroemon

ご回答ありがとうございます。


質問②うまくいきました。

質問①について、いただいたご回答を元にいろいろ考えてみたのですが、

どうやったら良いかわかりませんでした。

どのように書き直せばよいか教えていただけませんでしょうか?

本来ならこの説明だけで理解すべきなのでしょうが、なにぶん未熟者ですのでよろしくお願いします。

2008/04/28 16:49:07
id:wizemperor No.2

回答回数379ベストアンサー獲得回数52

ポイント35pt

2です。

function mysql_prepared(){
$db = @mysql_connect(SERVER,USER,PASSWD);
mysql_select_db(DB_NAME);
$result = mysql_query("select * from site");
return $result;
}


$result = mysql_prepared();

while ($row = mysql_fetch_array ($result,MYSQL_ASSOC)){
foreach ($row as $val){
echo "<br>".$val;
}}

こういうことだと思います。

id:taroemon

どうしてこうすると結果が違ってくるのかわかりませんでしたが、

なにはともわれ無事うまくいきました。

ご回答ありがとうございます。

2008/04/28 17:12:08

コメントはまだありません

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

トラックバック

  • 隠れオブジェクトが見づらいPHP PHPについて次の2つの質問にお答えください。 質問? スクリプト?と同じ働きをするように、ユーザー定義関数を使って、 スクリプト?を作成しましたが、う
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

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

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