Php while循环中的查询仅显示1个结果
我正在用php做一个while循环,一切都很顺利,但问题是 我不仅想获取用户id,还想获取另一个表中的其他内容,因此,当我继续在while循环中进行查询并从第二个表中选择所有内容,其中id等于第一个查询结果的id时,它只返回1个结果 这就是我目前拥有的代码:Php while循环中的查询仅显示1个结果,php,mysql,sql,loops,while-loop,Php,Mysql,Sql,Loops,While Loop,我正在用php做一个while循环,一切都很顺利,但问题是 我不仅想获取用户id,还想获取另一个表中的其他内容,因此,当我继续在while循环中进行查询并从第二个表中选择所有内容,其中id等于第一个查询结果的id时,它只返回1个结果 这就是我目前拥有的代码: public function getFriends($id) { global $params; $get = $this->db->select("{$this->DB['data']['friends']['tbl
public function getFriends($id)
{
global $params;
$get = $this->db->select("{$this->DB['data']['friends']['tbl']}", "*",
array(
"{$this->DB['data']['friends']['one']}" => $id
)
);
if($get)
{
while($key = $get->fetch())
{
$query = $this->db->query("SELECT * FROM {$this->DB['data']['users']['tbl']}
WHERE {$this->DB['data']['users']['id']} = :id",
array(
"id" => $key->{$this->DB['data']['friends']['two']}
)
);
while($row = $query->fetch())
{
$params["user_friends"][] = [
"id" => $key->{$this->DB['data']['friends']['two']},
"name" => $row->{$this->DB['data']['users']['username']},
"look" => $row->{$this->DB['data']['users']['figure']}
];
}
}
}
else
{
$params["update_error"] = $params["lang_no_friends"];
}
}
提前谢谢!
请帮帮我 诊断PHP和Mysql问题的第一步是在代码中添加行,告诉您每行在做什么,并在每次输入循环时声明;在运行每个mysql查询时,吐出查询字符串,以便缩小问题的范围。回想起来,这通常会让你觉得很愚蠢:嗯,这个查询没有返回任何内容,因为我将记录ID格式化错误等等
您上面提供的代码片段对我没有太大帮助。我是一个疑难解答者而不是解析器,因此我需要诊断数据而不是直接代码来提供更多帮助。在没有答案的情况下,我不知道您在scenese背后使用的是什么db框架…PDO、mysqli,或者希望不是mysql。但是,在任何情况下,问题可能是第二个查询会阻止第一个查询继续。我会使用PDO->fetchAll获取所有结果…但是你说你不能这样做…因此,循环第一个结果并将这些结果加载到数组是我要做的第一件事,看看这是否是问题所在:
public function getFriends($id)
{
global $params;
$get = $this->db->select("{$this->DB['data']['friends']['tbl']}", "*",
array(
"{$this->DB['data']['friends']['one']}" => $id
)
);
$firstResults = array();
if( $get ) {
while( $key = $get->fetch() ) {
$firstResults[] = $key;
}
}
else
{
$params["update_error"] = $params["lang_no_friends"];
}
foreach( $firstResults AS $key )
{
$query = $this->db->query("SELECT * FROM {$this->DB['data']['users']['tbl']}
WHERE {$this->DB['data']['users']['id']} = :id",
array(
"id" => $key->{$this->DB['data']['friends']['two']}
)
);
while($row = $query->fetch())
{
$params["user_friends"][] = [
"id" => $key->{$this->DB['data']['friends']['two']},
"name" => $row->{$this->DB['data']['users']['username']},
"look" => $row->{$this->DB['data']['users']['figure']}
];
}
}
}
如果这不起作用,那么我们需要更多的数据。生成了什么查询?当您手动运行它时,它是否返回多个结果?如果您摆脱了内部查询,这会修复它吗?等等。您是否能够使用外部查询中使用的任何内容执行fetchAll,以查看提前检索所有记录是否可以解决问题……如果上一个查询是逐行而不是一次性获取的,则同一连接上的内部查询有时会覆盖上一个查询。不,我无法执行fetchAll,还有其他提示吗?如果Kevin所说的查询干扰是一个因素,那么可以迭代第一个结果集,将其值存储在本地;然后迭代本地数组。