更新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;
Run Code Online (Sandbox Code Playgroud)
更新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;
Run Code Online (Sandbox Code Playgroud)
mjs*_*ier 191
只是取.只获得一行.所以不需要foreach循环:D
$row = $STH -> fetch();
Run Code Online (Sandbox Code Playgroud)
例子(ty northkildonan):
$dbh = new PDO(" --- connection string --- ");
$stmt = $dbh->prepare("SELECT name FROM mytable WHERE id=4 LIMIT 1");
$stmt->execute();
$row = $stmt->fetch();
Run Code Online (Sandbox Code Playgroud)
str*_*rry 15
$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;
Run Code Online (Sandbox Code Playgroud)
您可以一起使用fetch和LIMIT.LIMIT的作用是数据库只返回一个条目,因此PHP必须处理非常少的数据.使用fetch,您可以从数据库响应中获取第一个(也是唯一的)结果条目.
您可以通过设置提取类型进行更多优化,请参阅http://www.php.net/manual/de/pdostatement.fetch.php.如果仅通过列名访问它,则需要编号数组.
请注意ORDER子句.使用ORDER或WHERE获取所需的行.否则,您将获得表格中的第一行.
Bé *_*Pro 13
你试过了吗:
$DBH = new PDO( "connection string goes here" );
$row = $DBH->query( "select figure from table1" )->fetch();
echo $row["figure"];
$DBH = null;
Run Code Online (Sandbox Code Playgroud)
您可以尝试使用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);
Run Code Online (Sandbox Code Playgroud)
如何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;
Run Code Online (Sandbox Code Playgroud)