如何将多个变量设置为各自的值?

时间:2013-04-24 23:33:33

标签: php mysql arrays variables

我的sql语句返回一个包含2个关联键的数组,上下。

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

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

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

这样上下会取相应的值吗?

3 个答案:

答案 0 :(得分:3)

mysqli::query()的返回值不是一个关联数组,而是一个'结果集'。如果查询失败,你甚至不会得到,但是FALSE。所以尽管你可以做到

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

这不会让您检查查询是否真的有效,所以最好将其拆分出来。

答案 1 :(得分: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 - 虽然可以做到这一点,但从可读性的角度来看,它确实很糟糕,我强烈建议不要这样做。

答案 2 :(得分:1)

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

例如:

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