A. thinkphp涓鐨刦oreach寰鐜浣跨敤閿欒錛岃幏鍙栦笉鍒版暟鎹
浠庨昏緫涓婄湅浣犵殑浠g爜鏄娌℃湁闂棰樼殑銆傚彲浠ヤ嬌鐢╲ar_export 杈撳嚭涓涓嬫渶緇堢殑$xusers 鐪嬩笅鏄鍚︽槸浣犺佺殑鏁版嵁
$xusers=M('member')->where(['parentid'=>12345])->field('id')->select();
foreach($xusersas$key=>$value){
$pid1=($xusers[$key]['id']);
$xusers[$key]['erid']=M('member')->where(['parentid'=>$pid1])->field('id')->select();
}
var_export($xusers);
杈撳嚭鐨勬牸寮忓簲璇ョ被浼
array(
array(
'id'=>123458,
'erid'=>array(
array(
'id'=>221451
),
array(
'id'=>221452
),
),
),
array(
'id'=>123457,
'erid'=>array(
),
),
array(
'id'=>123457,
'erid'=>array(
array(
'id'=>221453
),
),
),
)
B. php中foreach循環語句中可以使用sql查詢語句嗎比如
最好還是查好信息後在foreach!要不然得執行多少次sql,會很慢的!不採用這樣的做法
C. PHP通過foreach循環向資料庫中寫入表單項的值的疑問
建議樓主把SQL語句顯示出來,自然就明白問題在哪裡了,我試著簡單說一下,假設你的USER數據表有三個欄位(name、age、sex),_POST提交數據也是這三個欄位的,假設POST的值分別是abc、18、男,那麼帖子的PHP會執行下面的三個SQL語句:
INSERT INTO USER(name) VALUES(abc)
INSERT INTO USER(age) VALUES(18)
INSERT INTO USER(sex) VALUES(男)
現在明白了吧,一、三兩句會語法錯誤,英文沒有在文本欄位添加引號,第二句即使執行成功插入的記錄只有年齡,姓名、性別為空,如果資料庫有限制欄位有效性,那麼第二句插入也會失敗,資料庫需要的語句是:
INSERT INTO USER(name,age,sex) VALUES('abc',18,'男')
如果理解了,自然會下面這樣寫PHP語句:
$sql=<<<END
INSERT INTO USER(name,age,sex)
VALUES('{$_POST['name']}',{$_POST['age']},'{$_POST['sex']}')
END;
D. PHP查詢資料庫用FOR循環問題
這當然是不行的了,上面的告訴你的也是錯誤的,因為原因在於你循環的時候進行了內資料庫的查詢,所以每次都是容新的數據,指針當然要從第一條開始了。
所以不是你的循環的錯誤,而是你資料庫查詢代碼位置的錯誤
要這樣寫
$num=mysql_query("select * from china_city where parentid=0");
$n=mysql_num_rows($num);
for($i=1;$i<=$n;$i++){
${"row".$i}=mysql_fetch_array($num);
echo $i." ".${"row".$i}['city']."<br>";
}
一般都是用foreach或while寫的
foreach(mysql_fetch_array($num) as $key=>$value){}
while($row =mysql_fetch_array($num)){}