请教:如何将sql查询结果生成多维数组

cat7x 2012-08-27 01:22:26
我想实现的功能是这样的:
我传递一串数字供sql接收,数字的形式是菜品的ID值,类似“1,2,3,”,经过查询可以变成根据菜品分类而来的多维数组。


第一个问题,我如何将这个字符串分离开后循环利用sql查询并保存全部结果呢?
$s=$ids;//接收到的ID字符串


$sqlslt_veginfo="select {$tb_veg}.veg_id,{$tb_veg}.vsort_id,{$tb_veg}.veg_name,{$tb_veg}.veg_preprice,{$tb_veg}.veg_favprice,{$tb_veg}.veg_picstr,{$tb_veg}.veg_ptfs,{$tb_veg}.veg_ts,{$tb_veg}.veg_fj from {$tb_veg}
where {$tb_veg}.veg_id='{$s}'and {$tb_veg}.vdel_vfy='0'";
$query_veginfo=$pdodb->query($sqlslt_veginfo);
$array_veginfo=$query_veginfo->fetch(2);

//这段sql是根据菜品的某个ID去查询菜品的详细信息,如果保存那一串ID的全部菜品信息呢?

第二个问题,保存了全部ID查询后结果的数组,如何变为下面的多维数组形式

$a=array(
"2" => Array
(
"1" => Array
(
"id" => 728,
"name" => "玉带香油莴笋",
"preprice" => 68,
"favprice" => 68,
"pic" => jdcpic1342685874.jpg,
"num" => 1,
"ts" => 0,
"fj" => ""
),
"2" => Array
(
"id" => 727,
"name" => 新杭帮熏鱼,
"preprice" => 38,
"favprice" => 38,
"pic" => jdcpic1342685755.jpg,
"num" => 1,
"ts" => 0,
"fj" => ""
)

),
"1" => Array
(
"1" => Array
(
"id" => 749,
"name" => 秘制日本二十头极品鲍鱼,
"preprice" => 888,
"favprice" => 888,
"pic" => jdcpic1342688648.jpg,
"num" => 5,
"ts" => 0,
"fj" => ""
),
"2" => Array
(
"id" => 748,
"name" => 原汁慢煮焖煨中东干鲍鱼,
"preprice" => 788,
"favprice" => 788,
"pic" => jdcpic1342688600.jpg,
"num" => 1,
"ts" => 0,
"fj" => ""
),
"3" => Array
(
"id" => 747,
"name" => 炝椒酱爆嫩鸡丁,
"preprice" => 20,
"favprice" => 20,
"pic" => jdcpic1342688515.jpg,
"num" => 1,
"ts" => 0,
"fj" => ""
)
)
);

以上代码里,最外围的2和1 代表的是菜品所属的分类,该维数不是固定的,可能都是一个分类,也可能是四五个分类中的,
其次的1,2,3就是菜的编号了,自动来的,最后的值是菜品的信息。
如何修改。利用上面的sql最后可以生成结构与下面多维数组相同的数组呢?
还望高手指教,谢谢!
...全文
583 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
码无边 2012-08-29
  • 打赏
  • 举报
回复
楼主可以将多个sql 的where条件组成数组,用explode分隔开。
cat7x 2012-08-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

建议楼主仔细看一下你的pdo库,里面应该有提供方法是直接获取所有查询结果的。
[/Quote]
谢谢,我已经可以获取所有ID串的集合数组了,第二个问题还是比较困惑,不知道有啥方法可以按照vsort_id排序组成多维数组。。。
acabin 2012-08-28
  • 打赏
  • 举报
回复
建议楼主仔细看一下你的pdo库,里面应该有提供方法是直接获取所有查询结果的。
coder 2012-08-27
  • 打赏
  • 举报
回复
一个sql搞不定。就用俩喽
cat7x 2012-08-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

where {$tb_veg}.veg_id='{$s}'and {$tb_veg}.vdel_vfy='0'";
语句的这句你能看懂不,改为这样测试一下
where {$tb_veg}.veg_id='{$s}' or {$tb_veg}.veg_id='{$s1}' and {$tb_veg}.vdel_vfy='0'";
不知你明白意思了没,再测一下,看数据出来了没
[/Quote]
这个sql是我写的我可以看懂啊,只不过你的意思不太明白。
$s接收的值是从外界传递的,一般是一串ID字符串,也就是说不止一个ID,
我测试的时候只传了一个ID,所以可以查询出结果。希望可以对一串ID字符串进行操作,但是不知道方法,你写的$s1是做什么用的不明白。
franzhong 2012-08-27
  • 打赏
  • 举报
回复
where {$tb_veg}.veg_id='{$s}'and {$tb_veg}.vdel_vfy='0'";
语句的这句你能看懂不,改为这样测试一下
where {$tb_veg}.veg_id='{$s}' or {$tb_veg}.veg_id='{$s1}' and {$tb_veg}.vdel_vfy='0'";
不知你明白意思了没,再测一下,看数据出来了没
cat7x 2012-08-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

1:$array_veginfo=$query_veginfo->fetch(2);你把这个 2改为0或是10000看得到的是什么,最好能看看如何实现的,我怀疑2是总条数,正常情况下设计,0应是不限制
2:
echo "<pre>";
print_r($array_veginfo);
看看是不是你想要的,如果不是,也应包含你想要的一切信息,只是格式不对劲而以,你重新组合一下,我估计对劲;……
[/Quote]

你好,只传递一个ID 749时,fetch(2)的结果是
Array
(
[veg_id] => 749
[vsort_id] => 1
[veg_name] => 秘制日本二十头极品鲍鱼
[veg_preprice] => 888
[veg_favprice] => 888
[veg_picstr] => jdcpic1342688648.jpg
[veg_ptfs] =>
[veg_ts] => 0
[veg_fj] =>
)
是单个菜品的详细信息
改为0后感觉取值有点混乱
Array
(
[veg_id] => 749
[0] => 749
[vsort_id] => 1
[1] => 1
[veg_name] => 秘制日本二十头极品鲍鱼
[2] => 秘制日本二十头极品鲍鱼
[veg_preprice] => 888
[3] => 888
[veg_favprice] => 888
[4] => 888
[veg_picstr] => jdcpic1342688648.jpg
[5] => jdcpic1342688648.jpg
[veg_ptfs] =>
[6] =>
[veg_ts] => 0
[7] => 0
[veg_fj] =>
[8] =>
)


我想传递的不止一个ID,是一串,所以不知道怎么利用sql组合成数组
franzhong 2012-08-27
  • 打赏
  • 举报
回复
1:$array_veginfo=$query_veginfo->fetch(2);你把这个 2改为0或是10000看得到的是什么,最好能看看如何实现的,我怀疑2是总条数,正常情况下设计,0应是不限制
2:
echo "<pre>";
print_r($array_veginfo);
看看是不是你想要的,如果不是,也应包含你想要的一切信息,只是格式不对劲而以,你重新组合一下,我估计对劲;如果不对劲把这个调试结果打印出来让大家看一下
xie5200555 2012-08-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
我想实现的功能是这样的:
我传递一串数字供sql接收,数字的形式是菜品的ID值,类似“1,2,3,”,经过查询可以变成根据菜品分类而来的多维数组。


第一个问题,我如何将这个字符串分离开后循环利用sql查询并保存全部结果呢?
PHP code
$s=$ids;//接收到的ID字符串

SQL code

$sqlslt_veginfo="select {$tb_veg}.veg_……
[/Quote]fddddff

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧