Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取多个列,同时减少SQL负载_Php_Sql_Pdo - Fatal编程技术网

Php 获取多个列,同时减少SQL负载

Php 获取多个列,同时减少SQL负载,php,sql,pdo,Php,Sql,Pdo,如果这是一个微不足道的问题,我提前道歉,但我确实查看了PHP手册,我似乎只能找到关于获取多行的信息(我对此没有问题)。考虑下面的代码: $fetch = $db->prepare(" SELECT col1, col2 FROM table WHERE col0 = '1' "); $fetch->execute(); //SQL request made, returns 1 row, 2 columns echo $fetch->fe

如果这是一个微不足道的问题,我提前道歉,但我确实查看了PHP手册,我似乎只能找到关于获取多行的信息(我对此没有问题)。考虑下面的代码:

$fetch = $db->prepare("
    SELECT col1, col2
        FROM table
        WHERE col0 = '1'
");
$fetch->execute();
//SQL request made, returns 1 row, 2 columns
echo $fetch->fetchColumn(); //perfect
echo $fetch->fetchColumn(1); //doesn't work
//only one column can be fetched per SQL request
根据我对PDO的有限理解,我需要做如下工作:

$fetch->execute(); //execute 1st time
echo $fetch->fetchColumn(); //perfect
$fetch->execute(); //execute 2nd time
echo $fetch->fetchColumn(1); //perfect
//or
$fetch->execute(); //execute only once
foreach($fetch as $fetcher) {} //ugly
echo $fetcher["col1"]; //perfect
echo $fetcher["col2"]; //perfect
第一种方法很慢,但第二种方法缺乏技巧。我知道我可以将逻辑放在
foreach()
循环中,但除了看起来更干净一点之外,它做了同样的事情,因为请求只返回一行(
foreach()
将只迭代一次)


如果只是为了提高效率,我希望尽可能减少SQL负载。实际的处理差异是千分之一秒长。但我也希望代码简洁明了。

如果您想有效处理SQL流量,只需执行并获取一次:

$fetch->execute(); //execute only once
$row = $fetch->fetch(PDO::FETCH_ASSOC);
echo $row["col1"]; //perfect
echo $row["col2"]; //perfect

如果您想高效地处理SQL流量,只需执行并获取一次:

$fetch->execute(); //execute only once
$row = $fetch->fetch(PDO::FETCH_ASSOC);
echo $row["col1"]; //perfect
echo $row["col2"]; //perfect

为什么你会认为foreach是“丑陋的”?路人:我不认为循环本身是丑陋的,只是在这个应用程序中缺乏技巧。对我来说,这相当于只对一次迭代执行
for()
循环。一定有更好的执行。为什么你会认为
foreach
是“丑陋的”?路人:我不认为循环本身是丑陋的,只是在这个应用中缺乏技巧。对我来说,这相当于只对一次迭代执行
for()
循环。必须有更好的执行。