PHP PDO返回单行

时间:2011-03-28 08:53:29

标签: php pdo

更新2:

这是最优化的吗?

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

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

$STH -> execute();

$result = $STH -> fetch();

echo $result ["figure"];

$DBH = null;

更新1:

我知道我可以为sql查询添加限制,但我也想摆脱foreach循环,我不应该这样做。

原始问题:

我有以下脚本,这是一个很好的IMO,因为“foreach”部分而从数据库返回很多行。

如果我知道我将永远只从数据库中获取1行,我如何优化它。如果我知道我只会从数据库中获得一行,我不明白为什么我需要foreach循环,但我不知道如何更改代码。

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

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

$STH -> execute();

$result = $STH -> fetchAll();

foreach( $result as $row ) {
    echo $row["figure"];
}

$DBH = null;

7 个答案:

答案 0 :(得分:181)

刚拿来。只获得一行。所以不需要foreach循环:D

$row  = $STH -> fetch();

示例(ty northkildonan):

$dbh = new PDO(" --- connection string --- "); 
$stmt = $dbh->prepare("SELECT name FROM mytable WHERE id=4 LIMIT 1"); 
$stmt->execute(); 
$row = $stmt->fetch();

答案 1 :(得分:14)

$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;

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

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

请注意ORDER子句。使用ORDER或WHERE获取所需的行。否则,你将获得表中第一行的时间。

答案 2 :(得分:12)

你有没有尝试过:

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

答案 3 :(得分:6)

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

答案 4 :(得分:6)

您可以尝试使用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);

答案 5 :(得分:3)

如何使用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;

答案 6 :(得分:1)

感谢Steven建议使用fetchColumn,我的建议是从你的代码中删除短1行。

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