返回单行的PHP PDO

返回单行的PHP PDO,php,pdo,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查询添加限制,但我还想摆

更新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循环,这是我不需要的

原始问题:

我有下面的脚本,由于foreach部分的缘故,它很适合从数据库返回许多行

如果我知道我总是只能从数据库中得到一行,那么我如何优化它呢。如果我知道我只能从数据库中得到一行,我不明白为什么我需要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;
使用限制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;
您可以同时使用fetch和LIMIT。限制的效果是数据库只返回一个条目,因此PHP必须处理非常少的数据。使用fetch,您可以从数据库响应中获得第一个也是唯一的结果条目

您可以通过设置抓取类型进行更多优化,请参阅。如果仅通过列名访问它,则需要使用带编号的数组


注意订单条款。使用顺序或从何处获取所需行。否则,您将始终获得表中的第一行。

只需获取即可。只有一行。所以不需要foreach循环:D

$row  = $STH -> fetch();
诺思基尔多南的例子:

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

如果只需要一个字段,可以使用fetchColumn而不是fetch-

多亏了Steven建议使用fetchColumn,我建议从代码中删去一行

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

您可以使用PDO对基于用户输入的数据库选择查询尝试以下操作:

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

如果您在prepare语句中使用LIMIT 1,则优化程度最高。非常好,请给出完整的示例。在上面的例子中,不仅仅是一行需要转到某个地方。@andrebruton$dbh=new PDO连接字符串-$stmt=$dbh->prepareSELECT name FROM mytable,其中id=4 LIMIT 1$stmt->execute$行=$stmt->fetch;如果您只需要一个键值数组,fetchPDO::FETCH_ASSOC会将返回的数组减半。您真的需要一直限制1吗?知道你选择了一个独特的价值出现在我的脑海里。我认为你只是有一个糟糕的一天,兄弟,或者你只是想突出你的个人资料。我的答案与使用PDO查询的SELECT函数变量的相同场景相一致。我将从我的答案中删除sql注入注释,只是为了让你和我都开心。$STH-$DBH->prepare应该是$STH=$DBH->prepare这个页面上的几个位置。你可以使用foreach in break;实际上,您可以进一步执行$row=$DBH->query$query->fetch['figure']。如果fetch因为没有结果而返回false,PHP将默默地忽略无效的键引用。如果查询出现问题,取决于错误处理的设置方式,我认为它要么抛出所需的异常,要么在false上获取无效的对象方法引用。。。。错误,由于查询明显失败,您无论如何都会得到它的一种形式。
$DBH = new PDO( "connection string goes here" );
$row = $DBH->query( "select figure from table1" )->fetch();
echo $row["figure"];
$DBH = null;