PHP PDO가 단일 행을 반환함

다음 스크립트는 “foreach” 섹션으로 인해 데이터베이스에서 많은 행을 반환하는 데 적합한 IMO입니다.

데이터베이스에서 항상 한 행만 가져올 수 있는 경우 이 작업을 최적화하려면 어떻게 해야 합니까?데이터베이스에서 1행밖에 얻을 수 없다는 것을 알게 되면 왜 Foreach 루프가 필요한지 알 수 없지만 코드를 변경하는 방법은 알 수 없습니다.

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


질문에 대한 답변



그냥 가져와.행이 1개뿐입니다.따라서 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(); 



$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를 사용하여 필요한 행을 가져옵니다.그렇지 않으면 표의 첫 번째 행이 시간을 나타냅니다.




시도하셨습니까?

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



하나의 필드만 원하는 경우 fetch – http://www.php.net/manual/en/pdostatement.fetchcolumn.php 대신 fetch Column을 사용할 수 있습니다.




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