如何在多个选项中选择并分配特定$键,特定$值?

时间:2018-04-16 07:52:36

标签: php mysql

我有一个包含多个列的MySQL表,我需要从中选择每个记录的所有列,并从中创建一个特定的$key=>$value。 例如

表格

  ID  |  group_cat |  group_sec  |  group_name  | enabled | sent
-------------------------------------------------------------------------------------
   1  |      C     |    sct_a   |  Project_A   |    1    |  no
   2  |      C     |    sct_b   |  Project_B   |    1    |  no
   3  |      P     |    sct_c   |  Moderators  |    1    |  no
   4  |      C     |    sct_d   |  Ambassad    |    1    |  no
   5  |      P     |    sct_e   |  PMP         |    0    |  no

我需要的MySQL查询是"SELECT * FROM groups WHERE sent = 'no' " 通过PHP是

PHP代码

$query = "SELECT * FROM `groups` WHERE `sent`= 'no' ";
$sth = $sql->prepare($query);
$sth->execute();

while($row = $sth->fetch(PDO::FETCH_ASSOC)) {
    foreach($row as $key => $value) { $$key = $value; }
    ...
    ...
    ...
}

这是我的问题: 我需要$key来自'group_sec列'相关$value来自'group_name'列。这样情侣$$key=>$value可以返回此结果(例如)

echo $sec_b;

返回: Project_B

你能帮我完成这件事吗?

提前谢谢

3 个答案:

答案 0 :(得分:2)

这将为您完成这项工作:

${$row['group_sec']} = $row['group_name'];
echo $sct_b;

输出:

Project_B

您可以在while循环中使用它(foreach可能会被删除):

while($row = $sth->fetch(PDO::FETCH_ASSOC)) {
    ${$row['group_sec']} = $row['group_name'];
    ...
    // do something with $sct_b
    ...
}

或者,如果列名可能会更改,但位置保持不变,则可以使用

while($row = $sth->fetch(PDO::FETCH_NUM)) {
    ${$row[2]} = $row[3];
    ...
    // do something with $sct_b
    ...
}

答案 1 :(得分:0)

您可以使用$row['group_sec']为密钥和$row['group_name']构建基于您喜欢的密钥和值的数组,例如:

  $query = "SELECT * FROM `groups` WHERE `sent`= 'no' ";
  $sth = $sql->prepare($query);
  $sth->execute();

  while($row = $sth->fetch(PDO::FETCH_ASSOC)) {

      $myArray[$row['group_sec']] = $row['group_name'];
  }

你可以看到结果

 foreach($myArray as  $key => $value){
  echo  $key . ' - ' . $value . '<br>';

 }

答案 2 :(得分:0)

line[i].append(item)