-1

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

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

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

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

这样上下会取各自的值吗?

4

3 回答 3

3

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

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

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

于 2013-04-24T23:44:16.397 回答
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 - 虽然可以这样做,但从可读性的角度来看确实很糟糕,我强烈建议不要这样做。

于 2013-04-24T23:41:58.837 回答
1

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

例如:

list($up, $down) = mysqli_fetch_array($queryResult, MYSQLI_ASSOC);
于 2013-04-24T23:41:16.613 回答