返回单行

我有下面的脚本,这是很好的国际海事组织从数据库中返回许多行,因为“ foreach”部分。

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

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

如何使用 limit 0,1的 mysql 优化

还有你的代码:

$DBH = new PDO( "connection string goes here" );


$STH - $DBH -> prepare( "select figure from table1" );


$STH -> execute();


$result = $STH ->fetch(PDO::FETCH_ASSOC)


echo $result["figure"];


$DBH = null;
$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;

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

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

注意 ORDER 子句。使用 ORDER 或 WHERE 获取所需的行。否则,您将始终获得表中的第一行。

仅仅获取。只获取一行。所以不需要 foreach 循环: 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();

如果您只想要一个字段,那么可以使用 fetchColumn 而不是 fetthttp://www.php.net/manual/en/pdostatement.fetchcolumn.php

由于 Steven 建议使用 fetchColumn,因此我建议从代码中删除一行代码。

$DBH = new PDO( "connection string goes here" );
$STH = $DBH->query( "select figure from table1" );
$result = $STH->fetchColumn();
echo $result;
$DBH = null;

您可以使用 PDO 对基于用户输入的数据库 SELECT 查询进行尝试:

$param = $_GET['username'];


$query=$dbh->prepare("SELECT secret FROM users WHERE username=:param");
$query->bindParam(':param', $param);
$query->execute();


$result = $query -> fetch();


print_r($result);

你有没有试过:

$DBH = new PDO( "connection string goes here" );
$row = $DBH->query( "select figure from table1" )->fetch();
echo $row["figure"];
$DBH = null;