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».

Как мне это оптимизировать, если я знаю, что я всегда получаю только 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; 

Solutions Collecting From Web of "PHP PDO возвращает одну строку"

Просто попробуй. получает только одну строку. Поэтому никакой петли foreach не требуется: D

 $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 должен обрабатывать очень мало данных. С помощью 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; 

Если вы хотите только одно поле, вы можете использовать fetchColumn вместо fetch – http://www.php.net/manual/en/pdostatement.fetchcolumn.php

Вы можете попробовать это для запроса SELECT базы данных на основе ввода пользователем с использованием 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); 

как об использовании 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, вот моя рекомендация сократить 1 строку от вашего кода.

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