【问题标题】:How can I set multiple variables to their respective values? [closed]如何将多个变量设置为各自的值? [关闭]
【发布时间】:2013-04-24 23:33:32
【问题描述】:

我的 sql 语句返回一个由上下 2 个关联键组成的数组。

query = 'SELECT `up`,`down` FROM `records` WHERE `id`=id'

有没有一种方法可以在一行中设置两个变量,例如:

$up, $down = 'SELECT `up`,`down` FROM `records` WHERE `id`=id'

这样 up 和 down 会取各自的值吗?

【问题讨论】:

  • 为什么不在这里分享实际代码?字符串不是数组。
  • 如果我知道真正的代码,我会回答我自己的问题
  • 然后,在询问之前先阅读mysqli 和/或PDO。

标签: php mysql arrays variables


【解决方案1】:

mysqli::query() 的返回值不是立即关联数组,而是“结果集”。如果查询失败,您甚至不会得到它,而是FALSE。所以虽然你可以做

list($up, $down) = $db->query ("SELECT up, down FROM records WHERE id='id';")->fetch_all();

这并不能让您检查查询是否确实有效,因此您最好将其拆分出来。

【讨论】:

    【解决方案2】:

    如果在进行 SQL 调用后,您会得到一个如下所示的关联数组:

    array(
      'up' => 'foo',
      'down' => 'bar'
    );
    

    那么你可以使用extract()来获取变量$up和$down。

    所以你可以这样做:

    // no need to initialize $up and $down
    
    extract(exec_query()); // asusming exec_query() returns the assoc array defined above
    echo $up;  // will print 'foo'
    echo PHP_EOL;
    echo $down;  // will print 'bar'
    

    PS - 虽然可以这样做,但从可读性的角度来看确实很糟糕,我强烈建议不要这样做。

    【讨论】:

    • +1 今天学习新东西
    【解决方案3】:

    list() 允许您从一个函数调用中分配多个值,但是,在您的情况下,您还需要执行查询并从数据库服务器获取数据。

    例如:

    list($up, $down) = mysqli_fetch_array($queryResult, MYSQLI_ASSOC);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-25
      • 2021-04-03
      相关资源
      最近更新 更多