我想做的是基于sql查询分配变量。 “ County”字段是一个包含Counties名称的varchar。
$sql="SELECT County from GAINLP WHERE SpeciesName LIKE '%Actias_luna%'";
($result=mysqli_query($connect,$sql));
$row=mysqli_fetch_array($result,MYSQLI_ASSOC);
if (in_array("Porter", $row)) {
$Porter='Present';
}
else {$Porter='Not Present';
};
echo $Porter;
发生的事情是in_array仅检测到阵列中的第一个县。如果我回显$ row,我会得到:
欧文·派克·帕克欧文·欧文·斯科特·摩根·格林·亨德里克斯
如果将针分配为“ Owen”,则echo $ Porter返回“ Present”。所有其他值回显“不存在”。如果我循环它,即使是“ Owen”也会向“ $ Porter”返回“ Not Present”。我在这里做什么错了?
这也不起作用:
$sql="SELECT County from GAINLP WHERE SpeciesName LIKE '%Actias_luna%'";
($result=mysqli_query($connect,$sql));
while ($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) {
if (in_array("Porter", $row)) {
$Porter='Found it';
}
else {$Porter='Didn\'t Find it';
}};
echo $Porter;
答案 0 :(得分:0)
mysqli_fetch_array仅读取一行。使用while循环遍历所有行:
while ($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) {
如果您不想检查每一行,而是想检查该行中是否存在该值,请使用mysqli_fetch_all:
$sql="SELECT County from GAINLP WHERE SpeciesName LIKE '%Actias_luna%'";
$result=mysqli_query($connect,$sql);
$rows=mysqli_fetch_all($result,MYSQLI_ASSOC);
if (in_array("Porter", $rows)) {
$Porter='Present';
} else {
$Porter='Not Present';
};
echo $Porter;
答案 1 :(得分:0)
线
$row=mysqli_fetch_array($result,MYSQLI_ASSOC);
将仅检索数据库的第一行。
如果要检查每一行以查看其中是否有Porter,则需要将标志设置为默认值“ no”,循环结果,并在找到标志时设置标志:>
$Porter="Not Present";
while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)){
if($row['County'] == "Porter"){
$Porter = "Present";
}
}
echo $Porter;
(这只是一个基本示例;例如,当您首次找到结果时,可以通过跳出循环来进一步优化它,但这可以完成工作)