0

我试图在单个 where 子句上为多个条件设置回显...如果找到此值回显某些内容...如果找到另一个值回显某些内容...我的代码当前一直回显表中的所有数据它只应该根据特定字段中存储的值来回显一组特定的数据......

<?php
$query = mysql_query("SELECT *
    FROM   tblfoodoptions JOIN tblhealthconditionfoods 
        ON tblfoodoptions.FoodID = tblhealthconditionfoods.FoodID, tblhealthcondition                                
    WHERE  tblhealthconditionfoods.HealthconditionID = tblHealthcondition.HealthconditionID 
    AND tblhealthcondition.Healthcondition IN ( 'Diabetes Type1' OR 'Diabetes Type2' OR 'General Health' OR 'Pregnant' OR 'Anemia' OR 'High Cholesterol')");

{
    echo "<table width='100%' border='4'>
            <caption>Your Food Options</caption>
            <thead>
                <tr>
                    <th>FoodName</th>
                    <th>Serving_Size</th>
                    <th>Calories</th>
                    <th>Cholestrol</th>
                    <th>Sodium</th>
                    <th>Protein</th>
                    <th>Total_Carbohydrates</th>
                    <th>Total_Fat</th>
                </tr>
            </thead>
        <tbody>";

        while($row = mysql_fetch_array($query))
        {
            echo "<tr>";
            echo "<td>".$row['FoodName']."</td>";
            echo "<td>".$row['Serving_Size']."</td>";
            echo "<td>".$row['Calories']."</td>";
            echo "<td>".$row['Cholesterol']."</td>";
            echo "<td>".$row['Sodium']."</td>";
            echo "<td>".$row['Protein']."</td>";
            echo "<td>".$row['Total_Carbohydrates']."</td>";
            echo "<td>".$row['Total_Fat']."</td>";
            echo "</tr>";
        }
        echo "</tbody></table>";
    }       
?>
4

4 回答 4

1
IN ( 'Diabetes Type1' OR 'Diabetes Type2' OR 'General Health' OR 'Pregnant' OR 'Anemia' OR 'High Cholesterol')

这部分应该是

IN ( 'Diabetes Type1', 'Diabetes Type2', 'General Health', 'Pregnant', 'Anemia', 'High Cholesterol');
于 2013-04-19T16:44:19.340 回答
0

你的IN条款不正确。您没有OR将这些值放在一起,您只需列出它们:

... something IN (1,2,3,4,5)
于 2013-04-19T16:43:54.463 回答
0

IN 条件中的值与许多值除以 OR 表达式相同

所以

where field = 10 OR field = 20 OR field = 30 
where field IN (10,20,30)

这两条线都相似

于 2013-04-19T17:01:27.113 回答
0

首先,我只需要指出您的数据库设置对于查询结果(选择)的方式并不理想。您正在使用关系数据库...使用关系。我并不是建议您不要在表上使用联接,但您可以通过使用 1:many 关系以将数据放置在相关位置的方式重新组织数据库结构。

最重要的是,您正在使用 PHP 来获取或存储数据……让程序来思考,而不是数据库。让数据库连接数据或以其他方式不必要地对表或数据进行连接会为 SQL 注入打开 2 阶(这是非常讨厌的,您看不到它的到来),但更糟糕的是您更改了存储的数据。PHP 有许多注意事项可供您以简洁和相关的方式组织数据。使用包装器将患者的数据拉入对象或数组,然后将您的食物选择或有关所述病症的其他医疗信息拉入多维数组列表

$foods = array(
                "Ritz Crackers" => array("serving" => "6 crackers", "calories" => 42 ...),
                "Yoplait Vanilla Yogurt" => array("serving" => "2oz", "calories" => 22, ...),
                );

该数据不是真实数据,只是说明如何利用数组列表发挥优势的示例。

一旦您的程序从数据库中提取数据,您就可以使用 OOP 甚至 PHP 中的程序编程将数据组织成可显示的报告,并根据需要编写。这使您可以自由地将数据库中的数据尽可能简化为代码,PHP 程序代码知道将什么翻译成什么。这将使您的数据库工作量大大减少,并让您可以自由地操作您想要的数据,而无需弃用、截断或以其他方式破坏或破坏数据库中的数据。

网上有很多关于 PHP、SQL 和 MySQL 的教程和手册页,只要在尽可能小的范围内准确地询问您需要做什么,您通常会找到让您前进的答案。

于 2015-09-17T17:52:03.030 回答