PHP 解決一次因壓縮代碼引發的死循環

test.table1表
id str1 str2
1 saa bbb
2 saa bbc
3 sss 123

要求:無重複列出“str1”段的內容。


本來是很簡單的也就幾行搞定,但我覺得代碼還可以壓縮一下,這樣看起來比較濃縮,於是杯具就發生了,錯誤代碼如下:

<?php
mysql_select_db("test", mysql_connect("localhost","******","******"));

while($row = mysql_fetch_array(mysql_query("SELECT DISTINCT str1 FROM table1")))
{
	echo $row['str1'];
	echo "<br>";
}
?>

第一眼看出其中的問題了麼?這貨居然引發了死循環。。。T_T

於是我又一步一步還原,死循環又不見了。顯然不是提交語句的問題,應該是語法結構出問題了。

果然,問題出在while裏。每次檢測成立條件的時候都會執行一次mysql_query。然後就杯具了。

只要保證mysql_query僅執行一次就好正確代碼如下:

<?php
mysql_select_db("test", mysql_connect("localhost","******","******"));

$result = mysql_query("SELECT DISTINCT str1 FROM table1");
while($row = mysql_fetch_array($result))
{
	echo $row['str1'];
	echo "<br>";
}
?>

優化代碼,萬惡之首……各位淡定,淡定!

發佈了27 篇原創文章 · 獲贊 26 · 訪問量 50萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章