【发布时间】:2016-07-09 18:04:01
【问题描述】:
是否可以SELECT 使用多个数组表。我知道这听起来令人困惑,但这是我所做的:
首先,我创建了一个表单,它有两个复选框选项,如下所示:
<form action="something.php" method="post">
<input type="checkbox" name="store[]" value="M1">
<input type="checkbox" name="store[]" value="M2">
<input type="submit" value="Go">
</form>
现在提交表单后,我可以通过foreach loop查看选择的商店:
$allstore = $_POST['store'];
foreach ($allstore as $store=>$value) {
echo $value;
}
到目前为止,一切都按需要工作!
然而,复选框中的这两个值被认为是 表名 !现在我怎样才能找到一种方法让 PHP 根据用户选择 $value 选择一个或两个表?
$query = "SELECT * from **{$allstore[0]},{$allstore[1]}** WHERE .....";
如您所见,{$allstore[0]},{$allstore[1]} 应该基于 foreach 循环创建。我似乎无法找到这样做的方法!我可以插入一个函数来为我做这件事吗?
像这样:$query = "SELECT * from ((( Function Here ))) WHERE .....";
如果你有不同的做法,请分享。
编辑:
M1 表
id |item_no |qty |price
1 x1 10 20
2 x2 5 22
3 x3 3 5
M2 表
id |item_no |qty |price
1 x1 11 20
2 x9 5 30
3 x10 6 26
输出表应该是
item_no | price | M1 | M2
x1 20 10 11
x2 22 5 N/A
x3 5 3 N/A
x9 30 N/A 5
x10 26 N/A 6
这就是我的目标。希望能解决!
【问题讨论】:
-
如果用户没有选择所有的表,输出应该是什么?如果两个表中的价格不同,
price列中的内容是什么?你想要的看起来像FULL OUTER JOIN,这是 MySQL 没有的;请参阅stackoverflow.com/questions/4796872/full-outer-join-in-mysql 了解解决方法。 -
好吧,我可以保证无论如何价格都是固定的。其次,除非选中 1 个复选框,否则用户无法提交表单。
-
我的意思是,如果他们只选择一张桌子,而不是两者都选择,结果应该是什么。如果他们只选择 M1,那么 M2 列中的内容是什么?
-
如果所有表中的价格都相同,这是不好的标准化,应该有另一个表包含项目的价格。
-
可以有2张以上的桌子吗?您是否需要一个适用于任意数量表或仅 2 个表的解决方案?