[php] 단일 행을 반환하는 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 루프를 제거하고 싶습니다.

원래 질문 :

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

데이터베이스에서 항상 하나의 행만 얻을 수 있다는 것을 알고 있다면 이것을 어떻게 최적화합니까? 데이터베이스에서 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 루프가 필요하지 않습니다.

$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는 매우 적은 데이터를 처리해야합니다. 가져 오기를 사용하면 데이터베이스 응답에서 첫 번째 (유일한) 결과 항목을 가져옵니다.

가져 오기 유형을 설정하여 더 많은 최적화를 수행 할 수 있습니다 ( 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;


답변

당신은 단지 하나의 필드를 원하는 경우에, 당신은 fetchColumn 사용할 수있는 대신 가져 오기 – http://www.php.net/manual/en/pdostatement.fetchcolumn.php을


답변

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,1mysql 최적화 에 사용하는 방법

및 귀하의 코드에 대해 :

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


답변

fetchColumn을 사용하라는 Steven의 제안 덕분에 여기에 코드에서 한 줄을 줄 이도록 권장합니다.

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