【问题标题】:php select entire table and set variables from multiple rows by idphp选择整个表并通过id从多行设置变量
【发布时间】:2016-05-01 20:27:41
【问题描述】:

我对 PHP 很陌生,所以如果这个答案已经存在,我深表歉意。我有一个看起来像这样的表:

mcID | mcName
-------------
M1   | M1name
M2   | M2name
M3   | M3name
M4   | M4name

我知道如何编写四个单独的 sql select 语句来将它们放入变量中,但这似乎有点过头了。我想知道是否有一种方法可以运行单个 select 语句来设置所有四个变量。我当前设置一个变量的代码如下:

$sql = "SELECT * FROM tblmaincircles WHERE mcID='M1'";
$result = $conn->query($sql);
if($result->num_rows > 0) {

    while($row = $result->fetch_assoc()) {

        $M1 = $row["mcName"];
    }
}
else {
echo "0 results";
}

对此的任何帮助将不胜感激。我有一种感觉,我错过了一些非常基本的东西。谢谢!

【问题讨论】:

  • 如果SELECT * FROM tblmaincircles呢?
  • where 不是必需的,如果您不想限制结果,请不要使用where。见dev.mysql.com/doc/refman/5.7/en/select.htmlThe WHERE clause, if given, indicates the condition or conditions that rows must satisfy to be selected. where_condition is an expression that evaluates to true for each row to be selected. The statement selects all rows if there is no WHERE clause.
  • 我知道 WHERE 子句将排除所有其他子句。我只是显示我当前的代码。我知道我需要删除此子句才能使其正常工作,但我更喜欢共享一段工作代码,而不是从一开始就被破坏的代码。

标签: php mysql variables select


【解决方案1】:

我想知道是否有一种方法可以运行单个 select 语句来设置所有四个变量。

是的,有办法。您可以使用单个查询并将值存储在使用 variable variables 的相应变量中,如下所示:

$sql = "SELECT * FROM tblmaincircles";
$result = $conn->query($sql);
if($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $$row['mcID'] = $row["mcName"];  // Variable variables
    }

    // display variables
    echo $M1;

    // Like this you can display or use any variable like $M2, $M3 and $M4

}
else {
    echo "0 results";
}

【讨论】:

  • 很好的答案。 TRiNE 刚刚击败你。谢谢!
  • @CraigHowell 查看我的回答和 TRiNE 回答的时间戳。无论如何,很高兴知道问题已解决。
  • 你是对的。我只是在饲料的流动。我把答案改成了你的。再次感谢!
  • @CraigHowell 不管谁先给出答案。如果问题解决了,就是这样。没必要竞争。没必要比较。 :)
  • 感谢 TRiNE,我是这个论坛的新手,所以感谢您的帮助!
【解决方案2】:

这完全符合您的预期,并且不使用数组。检查 M1,M2.. 变量

$sql = "SELECT * FROM tblmaincircles";
$result = $conn->query($sql);

if($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $$row["mcID"]= $row["mcName"];
    }
}
else {
   echo "0 results";
}

【讨论】:

  • @chris85 如果您仔细阅读该问题并将 rdn87 答案与我的答案进行比较,您会看到不同之处。 Craig Howell 需要将结果存储在变量中而不是数组中。这就是我提到的,并不是说整个代码段独立于使用数组。
  • 设置为一个变量,因为WHERE mcID='M1'。所以结果集是一行。
  • @chris85 是的。所以我删除了答案中的 where 子句。但这不是他所期望的唯一事情。这些结果应该存储在名为 M1、M2 的单独 4 个变量中。请问我的答案有什么问题?
  • 除了文字doesn't use arrays之外没有错,有数组,只是不是为了赋值。我不喜欢我的代码中的变量变量,因为随后代码中会出现魔术变量。我会使用一个带有列 id 索引的数组作为它的值;或多维,如果有很多结果..
  • 这正是我要找的!谢谢 TRiNE!
【解决方案3】:

你可以试试这个代码:

我使用了 数组 -> Array Manual
var_dump 函数 -> Var_dump

$sql = "SELECT * FROM tblmaincircles";
$result = $conn->query($sql);
$arrayMc = [];
if($result->num_rows > 0) {

    while($row = $result->fetch_assoc()) {

       $arrayMc[] = $row["mcName"];
    }

   var_dump($arrayM);
}
else {
echo "0 results";
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 2019-02-24
    • 2011-12-07
    • 1970-01-01
    相关资源
    最近更新 更多