업데이트 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,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;
답변
fetchColumn을 사용하라는 Steven의 제안 덕분에 여기에 코드에서 한 줄을 줄 이도록 권장합니다.
$DBH = new PDO( "connection string goes here" );
$STH = $DBH->query( "select figure from table1" );
$result = $STH->fetchColumn();
echo $result;
$DBH = null;