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行。 如果我知道我只会从数据库中得到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;
只要取。 只获得一行。 所以没有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();
$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必须处理的数据非常less。 通过读取,您可以从数据库响应中获得第一个(也是唯一的)结果条目。
注意ORDER子句。 使用ORDER或WHERE获取所需的行。 否则,你会得到表中的第一行。
你试过了吗:
$DBH = new PDO( "connection string goes here" ); $row = $DBH->query( "select figure from table1" )->fetch(); echo $row["figure"]; $DBH = null;
您可以尝试使用基于用户input使用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);
如何使用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;
感谢Steven的build议,使用fetchColumn,这是我的build议,从您的代码中缩短1行。
$DBH = new PDO( "connection string goes here" ); $STH - $DBH -> query( "select figure from table1" ); $result = $STH -> fetchColumn(); echo $result; $DBH = null;