ホームページ >バックエンド開発 >PHPチュートリアル >初心者の方、なぜ次のプログラムがループで出力されず、中国語の出力が依然として文字化けするのか教えてください。

初心者の方、なぜ次のプログラムがループで出力されず、中国語の出力が依然として文字化けするのか教えてください。

WBOY
WBOYオリジナル
2016-06-23 13:35:42924ブラウズ

<?$db_host = 'localhost';$db_user = 'root';$db_password = 'root3306';$db_database = 'chuyu';$con = mysql_connect($db_host, $db_user, $db_password);mysql_query("set names 'gb2312'"); if(!$con){die('数据库连接失败: ' . mysql_error());}mysql_select_db($db_database);global $site;$site_data=mysql_query("select * from dh_member_control where id=1",$con);$site=mysql_fetch_array($site_data);$hot_vip_data=mysql_query("SELECT * FROM dh_member WHERE `mck`=1 AND `photo`<>'/images/nan.png' AND `photo`<>'/images/nv.png' ORDER BY `mpower` DESC,`cktime` DESC LIMIT 1,12",$con);$hot_vip=mysql_fetch_array($hot_vip_data);$i=1;while ($hot_vip && $i<=12){if ($i % 6 == 0){$last=" class=\"last\"";}else{$last="";}$i++;?><li <? echo $last;?> onclick="javascript:location.href='/display/?<? echo $hot_vip["id"]?>.html'"><div class="vpc"><img src="<? echo $hot_vip["photo"]?>" /></div><div class="vpn"><? if (strlen($hot_vip["unick"])>4){echo substr($hot_vip["unick"],1,4);}else{echo $hot_vip["unick"];}if ($hot_vip["mpower"]===2){ echo "<a href=\"/vip/\" title=\"初遇会员\"><img src=\"/images/v.png\" /></a>";} ?></div><div class="vpt"><? $timediff = strtotime (date("y-m-d")) - strtotime($hot_vip["sri"]) ;echo intval($timediff/(86400*365)) . "岁";echo $hot_vip["add"];?></div></li><? }?>


テスト結果には 12 個の同一のレコードが表示され、中国語は文字化けしています。


ディスカッションに返信 (解決策)

$hot_vip=mysql_fetch_array($hot_vip_data); はループの外にあり、実行されるだけです。一度発生しました

$ifddf3469e19ed3233c8a5436b8dc59e2 には追加されていません
解決策は次のとおりです:

<?echo '<meta http-equiv="content-type" content="text/html;charset=utf-8">';$db_host = 'localhost';$db_user = 'root';$db_password = 'root3306';$db_database = 'chuyu';$con = mysql_connect($db_host, $db_user, $db_password);mysql_query("set names 'gb2312'"); if(!$con){die('数据库连接失败: ' . mysql_error());}mysql_select_db($db_database);global $site;$site_data=mysql_query("select * from dh_member_control where id=1",$con);$site=mysql_fetch_array($site_data); $hot_vip_data=mysql_query("SELECT * FROM dh_member WHERE `mck`=1 AND `photo`<>'/images/nan.png' AND `photo`<>'/images/nv.png' ORDER BY `mpower` DESC,`cktime` DESC LIMIT 1,12",$con);#$hot_vip=mysql_fetch_array($hot_vip_data);$i=1;while ($hot_vip=mysql_fetch_array($hot_vip_data) && $i<=12){if ($i % 6 == 0){$last=" class=\"last\"";}else{$last="";}$i++;?><li <? echo $last;?> onclick="javascript:location.href='/display/?<? echo $hot_vip["id"]?>.html'"><div class="vpc"><img src="<? echo $hot_vip["photo"]?>" /></div><div class="vpn"><? if (strlen($hot_vip["unick"])>4){echo substr($hot_vip["unick"],1,4);}else{echo $hot_vip["unick"];}if ($hot_vip["mpower"]===2){ echo "<a href=\"/vip/\" title=\"初遇会员\"><img src=\"/images/v.png\" /></a>";} ?></div><div class="vpt"><? $timediff = strtotime (date("y-m-d")) - strtotime($hot_vip["sri"]) ;echo intval($timediff/(86400*365)) . "岁";echo $hot_vip["add"];?></div></li><? }?>


お二人ともありがとうございます

問題は解決しましたが、少し疑問が残ります:

$hot_vip_data = mysql_query( "SELECT * FROM dh_member WHERE `mck`=1 AND `photo`a8093152e673feb7aba1828c43532094'/images/nan.png' AND `photo`a8093152e673feb7aba1828c43532094'/images/nv.png' ORDER BY `mpower` DESC,`cktime ` DESC LIMIT 1,12",$con);
$hot_vip = mysql_fetch_array($hot_vip_data);
while ($hot_vip ){...}

and

$hot_vip_data = mysql_query( "SELECT * FROM dh_member W HERE ` mck`=1 AND `photo`a8093152e673feb7aba1828c43532094'/images/nan.png' AND `photo`a8093152e673feb7aba1828c43532094'/images/nv.png' ORDER BY `mpower` DESC ,`cktime` DESC LIMIT 1, 12",$con);
while ($hot_vip = mysql_fetch_array($hot_vip_data)){...}

それらは同じですか?



それは違います!

$hot_vip = mysql_fetch_array($hot_vip_data); // レコードを取得します

while ($hot_vip){...} // $hot_vip が空でない場合、無限ループになります

while ($hot_vip = mysql_fetch_array( $hot_vip_data)){...} //$hot_vip が空になるまで各レコードをループして読み取ります (読み取りが完了します)

違います!

$hot_vip = mysql_fetch_array($hot_vip_data); // レコードを取得します

while ($hot_vip){...} // $hot_vip が空でない場合、無限ループになります

while ($hot_vip = mysql_fetch_array( $hot_vip_data)){...} //$hot_vip が空になるまで各レコードをループして読み取ります (読み取りが完了します)

ありがとうございます~
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。