返回单行的 PHP PDO

2022-08-30 06:56:38

我有以下脚本,由于“foreach”部分,它对于从数据库中返回许多行是很好的IMO。

我如何优化这个,如果我知道我总是只从数据库中得到1行。如果我知道我只会从数据库中获得1行,我不明白为什么我需要foreach循环,但我不知道如何更改代码。

$STH = $DBH -> prepare( "select figure from table1" );
$STH -> execute();
$result = $STH -> fetchAll();
foreach( $result as $row ) {
    echo $row["figure"];
}

答案 1

只是获取。只得到一行。因此,无需:D

$row  = $STH -> fetch();

例如(ty northkildonan):

$id = 4;
$stmt = $dbh->prepare("SELECT name FROM mytable WHERE id=? LIMIT 1"); 
$stmt->execute([$id]); 
$row = $stmt->fetch();

答案 2
$DBH = new PDO( "connection string goes here" );
$STH - $DBH -> prepare( "select figure from table1 ORDER BY x LIMIT 1" );

$STH -> execute();
$result = $STH -> fetch();
echo $result ["figure"];

$DBH = null;

您可以同时使用抓取和限制。LIMIT的效果是数据库只返回一个条目,因此PHP必须处理非常少的数据。通过 fetch,您可以从数据库响应中获取第一个(也是唯一一个)结果条目。

您可以通过设置抓取类型进行更多优化,请参阅 http://www.php.net/manual/de/pdostatement.fetch.php。如果仅通过列名访问它,则需要编号数组。

请注意 ORDER 子句。使用“顺序”或“位置”获取所需的行。否则,您将在所有时间中获得表中的第一行。


推荐