Php where子句中多个条件的sql查询
我试图在一个where子句上设置多个条件的回显。。。如果找到此值,则回显某些内容…如果找到其他值,则回显某些内容。。。 我的代码当前一直在回显表中的所有数据,而它只是根据特定字段中存储的值回显一组特定的数据Php where子句中多个条件的sql查询,php,sql,Php,Sql,我试图在一个where子句上设置多个条件的回显。。。如果找到此值,则回显某些内容…如果找到其他值,则回显某些内容。。。 我的代码当前一直在回显表中的所有数据,而它只是根据特定字段中存储的值回显一组特定的数据 <?php $query = mysql_query("SELECT * FROM tblfoodoptions JOIN tblhealthconditionfoods ON tblfoodoptions.FoodID = tblhealthcondit
<?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>";
}
?>
你的IN子句不正确。您不需要将这些值放在一起,只需列出它们:
... something IN (1,2,3,4,5)
这部分应该是
IN ( 'Diabetes Type1', 'Diabetes Type2', 'General Health', 'Pregnant', 'Anemia', 'High Cholesterol');
条件中的值与许多值除以或等于 所以
这两行代码都很相似。首先,我只需要指出,您的数据库设置对于查询结果的选择方式并不理想。您正在使用关系数据库。。。使用关系。我并不是建议您不在表上使用联接,但是您可以通过使用1:many关系将数据放在相关的位置来重新组织数据库结构 除此之外,您正在使用PHP获取或存储数据。。。让程序来思考,而不是数据库。让数据库连接数据或以其他不必要的方式连接表或数据会让您以第二顺序进行SQL注入,这非常糟糕,您看不到它的到来,但更糟糕的是您更改了存储的数据。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的教程和手册页面,只要在尽可能小的范围内准确地询问您需要做什么,您通常会找到让您前进的答案。这不是IN子句的正确格式;它应该在'item1','item2','item3'中{在第一次回显之前是什么意思?我确实尝试了dat bt it't wrk…。我需要它根据所选的健康状况只回显特定值。我不知道如何使dis wrkim nw获取dis错误警告:mysql_fetch_数组希望参数1是资源,布尔值在第110行的C:\xampp\htdocs\Finalproject\php\userprofile.php中给出您的查询结果似乎为FALSE。因此,我认为SQL中存在错误。没有代码,我无法回答您的问题。不。看起来您没有连接到MySQL
where field = 10 OR field = 20 OR field = 30
where field IN (10,20,30)
$foods = array(
"Ritz Crackers" => array("serving" => "6 crackers", "calories" => 42 ...),
"Yoplait Vanilla Yogurt" => array("serving" => "2oz", "calories" => 22, ...),
);