do{
if(($city_object->county_code-1) == $i){
foreach($city_object as $key => $value){
$new_city_object[urlencode($key)] = urlencode($value);
}
array_push($new_state_object[$county][$i][$city],$new_city_object);
}
}while($city_object = mysqli_fetch_object($city_result)); //city層
mysqli_data_seek($city_result,$i);
$i++;
我用do while 做了一個迴圈,我必須先取得值($city_object = mysqli_fetch_object($city_result))才能判斷是否要放入陣列裡面,但是判斷完後如果是false,那這筆資料不會放入陣列,下次近來也不會再跑一次這筆資料(等同於不見了)。只要每次false出現,就會少一筆資料。有甚麼方法可以解決嗎?
這個迴圈外還有一個迴圈
說真的。看完你這段我真的會昏頭就是了。
我真不知道該叫你從何改起就是了。
先不要說使不使用pdo的問題好了。
你的問題並不是程式上的問題。而是邏輯上的問題。
依你的程式而言用幾個說明。
1.為何一個現成需要的資料。不直接用while。偏偏用do .. while???
2.一個取得指定資料但沒使用??這是啥??
也就是說,其實你目前的情況,不清不楚。問題也不清楚,程式碼也不清楚。
我會建議你先自已了解一下該如何說你的需求。並思考一下程式的應用寫法。
最後給你的建議,你目前的程式,並沒有修改的必要。
因為不用改了,直接打掉重寫邏輯。
我說話很毒,但相信我,你這樣的程式碼會活不久的。以後會生蟲生不完的。
我用do while 做了一個迴圈,我必須先取得值($city_object = mysqli_fetch_object($city_result))才能判斷是否要放入陣列裡面
一般的做法
mysqli_fetch_object 都是全部跑過一輪
不管你要做什麼判斷
都寫在迴圈裡面
基本範例如下
<?php
$con=mysqli_connect("localhost","my_user","my_password","my_db");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql="SELECT Lastname,Age FROM Persons ORDER BY Lastname";
if ($result=mysqli_query($con,$sql))
{
while ($obj=mysqli_fetch_object($result))
{
if($city_object==$obj) {
//放到陣列裡面
}
}
// Free result set
mysqli_free_result($result);
}
mysqli_close($con);
?>