从MySQL查询结果创建和使用关联数组-PHP
我有一个sql查询,它通过数字键选择用餐选项。我想将每个数字键与餐名相关联。下面的查询只显示餐号(这是正确的),我无法匹配ID,因为我会得到不正确的结果从MySQL查询结果创建和使用关联数组-PHP,php,mysql,sql,arrays,Php,Mysql,Sql,Arrays,我有一个sql查询,它通过数字键选择用餐选项。我想将每个数字键与餐名相关联。下面的查询只显示餐号(这是正确的),我无法匹配ID,因为我会得到不正确的结果 Array ( [meal_1] => 1 [meal_2] => 2 [meal_3] => 1 ) Array ( [meal_1] => 2 [meal_2] => 1 [meal_3] => 2 ) Array ( [meal_1] =>
Array
(
[meal_1] => 1
[meal_2] => 2
[meal_3] => 1
)
Array
(
[meal_1] => 2
[meal_2] => 1
[meal_3] => 2
)
Array
(
[meal_1] => 0
[meal_2] => 3
[meal_3] => 3
)
Array
(
[meal_1] => 2
[meal_2] => 4
[meal_3] => 0
)
但我想这样输出
Array
(
[meal_1] => Soup
[meal_2] => Salmon
[meal_3] => Torte
)
Array
(
[meal_1] => Salad
[meal_2] => Chicken
[meal_3] => Tart
)
Array
(
[meal_1] => No
[meal_2] => Pasta
[meal_3] => Brulee
)
Array
(
[meal_1] => Salad
[meal_2] => Burger
[meal_3] => Pate
)
$result = mysql_query("SELECT Meal_table_1.meal_1, Meal_table_1.meal_2, Meal_table_1.meal_3 FROM Meal_table_1 ");
echo "<pre>";
while ($row = mysql_fetch_assoc($result)) {
print_r($row);
}
echo "</pre>";
mysql_free_result($result);
//Meal_table_1
+----+--------+-------+-------+
| ID | meal_1 | meal_2| meal_3|
+----+--------+-------+-------+
| 1 | 1 | 2 | 1 |
| 2 | 2 | 1 | 2 |
| 3 | 0 | 3 | 3 |
| 4 | 2 | 4 | 0 |
+----+--------+-------+-------+
$meal_1 = array('0' => 'No','1' => 'Soup','2' => 'Salad','3' => 'Pate');
$meal_2 = array('0' => 'No','1' => 'Chicken','2' => 'Salmon','3' => 'Pasta','4' => 'Burger');
$meal_3 = array('0' => 'No','1' => 'Torte','2' => 'Tart','3' => 'Brulee',);
// Meal_table_2 (should this be in three separate tables?)
+----+--------+--------+--------+
| ID | starter| main | dessert|
+----+--------+--------+--------+
| 1 | Soup | Chicken| Torte |
| 2 | Salad | Salmon | Tart |
| 3 | Pate | Pasta | Brulee |
| 4 | | Burger | |
+----+--------+--------+--------+
数组
(
[一餐]=>汤
[膳食2]=>鲑鱼
[膳食3]=>玉米饼
)
排列
(
[一餐]=>沙拉
[套餐2]=>鸡肉
[套餐3]=>蛋挞
)
排列
(
[膳食1]=>否
[膳食2]=>意大利面
[膳食3]=>布鲁利
)
排列
(
[一餐]=>沙拉
[套餐2]=>汉堡
[膳食3]=>肉馅
)
$result=mysql_query(“从餐表_1中选择餐表_1.1、餐表_1.2、餐表_1.3”);
回声“;
while($row=mysql\u fetch\u assoc($result)){
打印(行);
}
回声“;
mysql_free_result($result);
//饭桌1
+----+--------+-------+-------+
|ID |膳食1 |膳食2 |膳食3|
+----+--------+-------+-------+
| 1 | 1 | 2 | 1 |
| 2 | 2 | 1 | 2 |
| 3 | 0 | 3 | 3 |
| 4 | 2 | 4 | 0 |
+----+--------+-------+-------+
$MEIN_1=数组('0'=>'No'、'1'=>'Soup'、'2'=>'Salad'、'3'=>'Pate');
$MEINE_2=数组('0'=>'否','1'=>'鸡肉','2'=>'鲑鱼','3'=>'意大利面','4'=>'汉堡');
$MEINE_3=数组('0'=>'No'、'1'=>'Torte'、'2'=>'Tart'、'3'=>'Brulee',);
//餐表2(是否应在三张单独的桌子中?)
+----+--------+--------+--------+
|ID |开胃菜|主菜|甜点|
+----+--------+--------+--------+
|1 |汤|鸡|玉米饼|
|2 |沙拉|鲑鱼|馅饼|
|3 |肉酱|意大利面|布鲁利|
|4 | |汉堡||
+----+--------+--------+--------+
您现在的查询是:
SELECT tstarter.starter, tmain.main, tdessert.dessert
FROM Meal_table_1 meal
LEFT OUTER JOIN Meal_table_2 tstarter
ON meal.ID = tstarter.id
LEFT OUTER JOIN Meal_table_2 tmain
ON meal.ID = tmain.id
LEFT OUTER JOIN Meal_table_2 tdessert
ON meal.ID = tdessert.id
您的查询可能是:
+----+---------+---------+
| ID | type | main |
+----+---------+---------+
| 1 | starter | Soup |
| 1 | main | Chicken |
| 1 | dessert | Torte |
| 2 | starter | Salad |
| 2 | main | Salmon |
| 2 | dessert | Tart |
| 3 | starter | Pate |
| 3 | main | Pasta |
| 3 | dessert | Brulee |
| 4 | main | Burger |
+----+---------+---------+
但是最好改变餐表2的结构(并且给你的桌子起一个更好的名字!)
除非ID必须相同,否则最好为每一行指定自己的ID。也许您甚至不再需要该类型了?餐食名称存储在哪里?如果您有另一个表将餐食ID映射到名称,请编写一个联接查询。一如既往:请停止使用mysql\ucode>扩展名。它已弃用、不安全、未积极维护和过时。切换到一个现代、更安全、维护和全面更好的替代方案:PDO
,或mysqli.*
(i
用于改进…)
+----+---------+---------+
| ID | type | main |
+----+---------+---------+
| 1 | starter | Soup |
| 1 | main | Chicken |
| 1 | dessert | Torte |
| 2 | starter | Salad |
| 2 | main | Salmon |
| 2 | dessert | Tart |
| 3 | starter | Pate |
| 3 | main | Pasta |
| 3 | dessert | Brulee |
| 4 | main | Burger |
+----+---------+---------+