質問①
スクリプト①と同じ働きをするように、ユーザー定義関数を使って、
スクリプト②を作成しましたが、うまくいきません。
どうやったらよいか教えてください。
なお、スクリプト②を実行すると無限ループしてしまうのでご注意ください。
質問②
「"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;
}}
質問①:
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 した内容の
文字列が繋がります。
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; }}
こういうことだと思います。
どうしてこうすると結果が違ってくるのかわかりませんでしたが、
なにはともわれ無事うまくいきました。
ご回答ありがとうございます。
ご回答ありがとうございます。
質問②うまくいきました。
質問①について、いただいたご回答を元にいろいろ考えてみたのですが、
どうやったら良いかわかりませんでした。
どのように書き直せばよいか教えていただけませんでしょうか?
本来ならこの説明だけで理解すべきなのでしょうが、なにぶん未熟者ですのでよろしくお願いします。