从MySQL查询结果创建和使用关联数组-PHP

从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] =>

我有一个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] => 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  |
+----+---------+---------+