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, который мне не нужен.



ОРИГИНАЛЬНЫЙ ВОПРОС:



у меня есть следующий скрипт, который хорош IMO для возврата многих строк из базы данных из-за раздела "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;
680   7  

7 ответов:

просто принести. получает только одну строку. Поэтому не требуется цикл 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 вместе. Ограничение приводит к тому, что база данных возвращает только одну запись, поэтому PHP должен обрабатывать очень мало данных. С помощью fetch вы получаете первую (и единственную) запись результата из базы данных reponse.

вы можете сделать больше оптимизации, установив тип выборки, см. http://www.php.net/manual/de/pdostatement.fetch.php. Если вы обращаетесь к нему только через имена столбцов, вам нужно пронумеровать массив.

помните о предложении ORDER. Используйте порядок или где получить необходимую строку. В противном случае вы получите первую строку в таблице все время.

ты:

$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

вы можете попробовать это для запроса выбора базы данных на основе пользовательского ввода с помощью 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;

Comments

    Ничего не найдено.