我有一个php脚本,可以从mysql db中检索数据。
一切正常,但我的问题是这个$result = $dao->joinedEvents($userId);
返回一个数字数组,我想要做的是为每个ID运行这个$secondResult = $dao->joinedEventsInfo($receivedIds);
,我现在使用的这个脚本现在返回数据仅限一个ID。
这是我的PHP脚本的一部分:
$userId = htmlentities($_REQUEST["userId"]);
$result = $dao->joinedEvents($userId); //This is getting the IDs array
if(!empty($result)) {
$receivedIds = $result["event_id"];
$ids = explode(",", $receivedIds);
foreach($ids as $id){
$secondResult = $dao->joinedEventsInfo($id);
if(!empty($secondResult)) {
$returnValue["finalResult"][] = $secondResult;
} else {
$returnValue["status"] = "error";
$returnValue["message"][] = "Could not find records for id" . $id;
}
}
} else {
$returnValue["status"] = "Empty error";
$returnValue["message"] = "Could not find records";
}
$dao->closeConnection();
echo json_encode($returnValue);
这是joinEvents脚本:
public function joinedEvents($userId){
$returnValue = array();
$sql = "SELECT event_id from MyTable WHERE userId= '$userId' LIMIT 0 , 30";
$statement = $this->conn->prepare($sql);
if (!$statement)
throw new Exception($statement->error);
$statement->execute();
$result = $statement->get_result();
while ($myrow = $result->fetch_assoc())
{
$returnValue[] = $myrow;
}
return $returnValue;
}
这是joinEventsInfo脚本:
public function joinedEventsInfo($eventId){
$returnValue = array();
$sql = "SELECT * FROM Events WHERE eventId = '$eventId' LIMIT 0 , 30";
$statement = $this->conn->prepare($sql);
if (!$statement)
throw new Exception($statement->error);
$statement->execute();
$result = $statement->get_result();
while ($myrow = $result->fetch_assoc())
{
$returnValue[] = $myrow;
}
return $returnValue;
}
编辑:我需要的原因是我有两张桌子。在第一个我只有ID,在第二个我有信息。所以首先我需要获取ID然后我需要获取我刚收到的每个ID的数据。
非常感谢,我完全陷入困境。
答案 0 :(得分:2)
根据更新的代码段和下面的讨论,我们发现$result
确实是一个数组,解决方案是:
$userId = htmlentities($_REQUEST["userId"]);
$result = $dao->joinedEvents($userId);
if(count($result)){
foreach($result as $array){
$event_id = $array['event_id'];
$secondResult = $dao->joinedEventsInfo($event_id);
if(!empty($secondResult)) {
$returnValue["finalResult"][] = $secondResult;
} else {
$returnValue["status"] = "error";
$returnValue["message"][] = "Could not find records for id: " . $event_id;
}
}
}else {
$returnValue["status"] = "Empty error";
$returnValue["message"] = "Could not find records";
}
$dao->closeConnection();
echo json_encode($returnValue);
答案 1 :(得分:1)
你试过array_map()吗? 这将允许您轻松地在数组的每个成员上调用php函数。
另一种方法是使用公共while ($row = mysql_fetch_array($result))
,它会在返回结果的每一行中执行while循环中的代码。请注意,您可能需要将mysql_fetch_array
更改为特定于SQL连接的内容。