我的 sql 语句返回一个由 2 个关联键组成的数组,向上和向下。
query = 'SELECT `up`,`down` FROM `records` WHERE `id`=id'
有没有一种方法可以在一行中设置两个变量,例如:
$up, $down = 'SELECT `up`,`down` FROM `records` WHERE `id`=id'
这样上下会取各自的值吗?
from 的返回值mysqli::query()
不是立即关联数组,而是“结果集”。如果查询失败,你甚至不会得到,但是FALSE
. 所以虽然你可以做
list($up, $down) = $db->query ("SELECT up, down FROM records WHERE id='id';")->fetch_all();
这不会让您检查查询是否确实有效,因此您最好将其拆分。
如果在进行 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 - 虽然可以这样做,但从可读性的角度来看确实很糟糕,我强烈建议不要这样做。
list()
允许您从一个函数调用中分配多个值,但是,在您的情况下,您还需要执行查询并从数据库服务器获取数据。
例如:
list($up, $down) = mysqli_fetch_array($queryResult, MYSQLI_ASSOC);