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)){}