提取具有相同id的多行mysql php

提取具有相同id的多行mysql php,php,mysql,mysqli,Php,Mysql,Mysqli,嗨,我有下表: id request_id ein intervention_date time_slot 10 1 600545383 18/05/2015 00:00 AM 11 3 802877145 01/06/2015 00:00 AM 12 3 802310154 02/06/2015 00:00 PM 13 3 801777170 03/06/2015 00:00 AM 我有以下疑问: function ge

嗨,我有下表:

id  request_id  ein intervention_date   time_slot
10  1   600545383   18/05/2015 00:00    AM
11  3   802877145   01/06/2015 00:00    AM
12  3   802310154   02/06/2015 00:00    PM
13  3   801777170   03/06/2015 00:00    AM
我有以下疑问:

function get_coach_request_assignment_on_request_id($request_id){
        $connection = get_db();
        $query = 'SELECT * FROM coach_request_assignment WHERE request_id='.$request_id;
        return $connection->query($query);
    }
调用此函数时,它只返回第一行,其中
request\u id=3
如何提取查询返回的所有值

这就是我尝试过的:

$coach_request_assignment_data = get_coach_request_assignment_on_request_id($request_id);
$coach_request_assignment_data = $coach_request_assignment_data->fetch_assoc();
这就是
var\u dump($coach\u request\u assignment\u data)
的样子:

array (size=5)
  'id' => string '11' (length=2)
  'request_id' => string '3' (length=1)
  'coach_uin' => string '802877145' (length=9)
  'date_intervention' => string '2015-06-01 00:00:00' (length=19)
  'time_slot' => string 'AM' (length=2)

谢谢这里…

如果这是一个
MySQLi
API,那么您需要多次调用
fetch\u assoc()
才能获得这些多行。您只调用了一次fetch\u assoc():

$results = get_coach_request_assignment_on_request_id($request_id);
$coach_data = array();
while($row = $results->fetch_assoc()) {
    $coach_data[] = $row; // push row
}
// print_r($coach_data);

如果这是一个
MySQLi
API,那么需要多次调用
fetch\u assoc()
才能获取这些多行。您只调用了一次fetch\u assoc():

$results = get_coach_request_assignment_on_request_id($request_id);
$coach_data = array();
while($row = $results->fetch_assoc()) {
    $coach_data[] = $row; // push row
}
// print_r($coach_data);

我猜你在使用mysqli扩展

试一试怎么样:

$coach_request_assignment_data->fetch_all(MYSQLI_ASSOC);

这将一次获取整个结果集,而不需要自己循环。MYSQLI_ASSOC告诉它以包含列名的关联数组返回它。默认值是MYSQLI_NUM,它只返回一个没有列名的数字索引数组。

我猜您使用的是MYSQLI扩展名

试一试怎么样:

$coach_request_assignment_data->fetch_all(MYSQLI_ASSOC);
这将一次获取整个结果集,而不需要自己循环。MYSQLI_ASSOC告诉它以包含列名的关联数组返回它。默认值是MYSQLI_NUM,它只返回一个没有列名的数字索引数组。

您使用的是PDO::query()?如果是,query()将返回一个可以循环的PDO语句,例如:

$results = get_coach_request_assignment_on_request_id($request_id);
foreach ($results as $result) {
   //do something with $result
}
文档:

您使用的是PDO::query()吗?如果是,query()将返回一个可以循环的PDO语句,例如:

$results = get_coach_request_assignment_on_request_id($request_id);
foreach ($results as $result) {
   //do something with $result
}

博士:

太棒了!我会接受这个答案!谢谢@user1578653然而,这会删除列名并用
string
替换它们,很高兴我能帮上忙!我将编辑我的答案以包含MYSQLI_ASSOCBrilliant!我会接受这个答案!谢谢@user1578653然而,这会删除列名并用
string
替换它们,很高兴我能帮上忙!我将编辑我的答案以包含MYSQLI\u ASSOCI尝试过的内容:
$coach\u request\u assignment\u data=get\u coach\u request\u assignment\u on\u request\u id($request\u id);虽然($row=$coach\u request\u assignment\u data->fetch\u assoc()){$coach\u data['coach\u uin']=$row['coach\u uin'];}
但这只返回第一条记录
uin
。@Shery是的,请注意您将覆盖
$coach\u data['coach\u uin']
每次迭代我都会更改它,但仍然不走运:
$coach\u request\u assignment\u data=get\u coach\u request\u assignment\u on\u request\u id($request\u id);虽然($row=$coach\u request\u assignment\u data->fetch\u assoc()){$i=1;$coach\u data[$i]['coach\u uin']=$row['coach\u uin'];$i++}
结果仍然相同:
数组(大小=1)1=>数组(大小=1)'coach\u uin'=>字符串'801777170'(长度=9)
@Shery你的
$i
应该在循环外部初始化外部,无论如何,我在回答中进行了编辑,如果你想将其存储在一个容器中,我尝试了以下方法:
$coach\u request\u assignment\u data=get\u coach\u request\u assignment\u on\u request\u id($request\u id);虽然($row=$coach\u request\u assignment\u data->fetch\u assoc()){$coach\u data['coach\u uin']=$row['coach\u uin'];}
但这只返回第一条记录
uin
。@Shery是的,请注意您将覆盖
$coach\u data['coach\u uin']
每次迭代我都会更改它,但仍然不走运:
$coach\u request\u assignment\u data=get\u coach\u request\u assignment\u on\u request\u id($request\u id);虽然($row=$coach\u request\u assignment\u data->fetch\u assoc()){$i=1;$coach\u data[$i]['coach\u uin']=$row['coach\u uin'];$i++}
结果仍然相同:
数组(大小=1)1=>数组(大小=1)'coach\u uin'=>字符串'801777170'(长度=9)
@Shery你的
$i
应该在循环外部初始化外部,不管怎样,我在我的答案中进行了编辑,如果你想将其存储在容器中