我正在运行查询以从数据库中获取结果。然后将结果保存在数组中。我想知道如何使用数组中的结果在单个查询中从数据库中获取更多结果。或者我必须使用多个查询?
$query2="SELECT officeName FROM office
WHERE parentOfficeID='$parent'";
$result2=mysqli_query($connect,$query2);
if(mysqli_num_rows($result2) != 0)
{
$results= array();
while ($row2 = mysqli_fetch_assoc($result2))
{
$results[]=$row2['officeName'];
}
}
$ results数组保存结果。我想单独使用officeName值。有什么办法可以使用单一查询吗?或者我必须处理每个值?
答案 0 :(得分:0)
要添加到@Nyranith,您还可以换出while语句并使用
mysqli_fetch_all($result2, MYSQLI_ASSOC);
这会将您的值作为关联数组返回,而无需您自行循环并构建数组。
自从我使用mysqli以来已经很长时间了,可能需要调整但是这里有。
这是了解流程本身的更好方法: 假设您有桌子:办公室和工作人员,由于某种原因,您通过办公室名称(坏juju)将办公室绑定到工作人员 $ parent = 1;
$query2="SELECT o.officeName, s.name
FROM office AS o
INNER JOIN staff AS s ON o.officeName = s.officeName
WHERE o.parentOfficeID=?";
$stmt = $connect->prepare($query2);
$query = $stmt->bindParam($parent);
$exec = $stmt->execute();
$results2 = mysqli_fetch_all($exec, MYSQLI_ASSOC);
现在,对结果数组执行一些操作
foreach($results2 as $key => $value) {
//loop through your results an do another query with them. Just like you queried the database to get these results.
}
答案 1 :(得分:0)
嗨如果我理解了您的问题,那么首先您要获取一些officeName
并将它们存储在数组中,然后根据officeName
获取其他一些信息。你可以使用这个
<?php
$db = new mysqli('localhost','root','','databasename');
$result = mysqli_query($db,"SELECT officeName FROM office WHERE parentOfficeID='$parent'") or die(mysqli_error($db));
$officeName = array();
while($row = mysqli_fetch_assoc($result)){
$officeName[] = $row['officeName'];//store your office name in an array
}
$officeName= join("', '", $officeName);//The join() function returns a string from the elements of an array. It is an alias of the implode() function.
$sql = "SELECT * FROM office WHERE officeName IN ('$officeName')";// query with IN condition
$result1 = mysqli_query($db,$sql) or die(mysqli_error($db));
while($row1 = mysqli_fetch_assoc($result1)){
echo "<pre>";print_r($row1);
}
了解有关join()
的更多信息。请阅读http://www.w3schools.com/php/func_string_join.asp
mysqli
IN condition
请阅读http://www.mysqltutorial.org/sql-in.aspx