【问题标题】:PHP: How can variables be assigned values from a MySQL Query?PHP:如何从 MySQL 查询中为变量赋值?
【发布时间】:2016-09-19 22:26:36
【问题描述】:

我有一个 MySQL 数据库,“fruits”,有 10 行,如下所示:

id | variable | value  
1  | apples  | 5  
2  | oranges  | 6  

如何有效地使用查询来分配 PHP 变量值,以便在其他地方使用它们:
$苹果 = 5;
$橙子 = 6;

或者换句话说,根据数据库中的“变量”列为 PHP 变量赋值。

我可以让它工作的唯一方法是:

$con = mysqli_connect($servername, $username, $password, $dbname);

$sql="SELECT variable, value FROM fruits where variable = 'oranges'";
$result=mysqli_query($con,$sql);
$row=mysqli_fetch_array($result,MYSQLI_ASSOC);
$oranges = $row["value"]; 

我可以这样做 10 次,但看起来很糟糕,必须有更好的方法,大概涉及某种循环。这不是专业人士(显然)如此完整的代码,所以我可以看到它是如何工作的,将不胜感激。

感谢您的帮助!

【问题讨论】:

  • 您可能正在寻找variable variables,尽管在几乎所有情况下,最好使用数组来代替。有一个数组,比如$fruits[$row['variable']] = $row['value'];,然后使用echo $fruits['oranges'];(一定要在进入循环之前定义数组,避免Undefined variable...提示)。
  • extract array_column($row, 'value', 'variable'); 但正如@Qirel 所说,最好使用数组来代替
  • 你知道 db 中的值的顺序,比如苹果然后橙色然后......

标签: php


【解决方案1】:

这里是一个可变变量的例子:

$sql="SELECT * FROM fruits";
$result = mysqli_query($conn,$sql);

if ($result->num_rows > 0) {

    while ($row = $result->fetch_assoc()) {
        $variable = $row["variable"];
        $$variable = $row["value"];

        echo("Name: " . ${variable} . " Value: " . $$variable . "<br>");
    }
}

最好的问候

【讨论】:

    【解决方案2】:

    这个也可以。

    $con = mysqli_connect($servername, $username, $password, $dbname);
    
    $sql="SELECT variable, value FROM fruits";
    $result=mysqli_query($con,$sql);
    while($row=mysqli_fetch_array($result,MYSQLI_ASSOC)){
        ${row["variable"]}= $row["value"];
    }
    

    【讨论】:

      【解决方案3】:

      我找不到一个这样做的理由。 数组本身就是一个变量。使用 $rows[2]['variable'] 或 $rows[1]['value'] 访问任何单个元素都非常容易。

      但如果你真的需要一些混乱,你可以结合 extract() 和 foreach 循环。

      【讨论】:

        猜你喜欢
        • 2011-09-13
        • 2015-01-27
        • 1970-01-01
        • 2017-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-02
        • 1970-01-01
        相关资源
        最近更新 更多