134 votes

PDO PHP retournant une seule ligne

Mise à JOUR 2:

Alors, est-ce le plus optimisé, il peut obtenir?

$DBH = new PDO( "connection string goes here" );

$STH - $DBH -> prepare( "select figure from table1" );

$STH -> execute();

$result = $STH -> fetch();

echo $result ["figure"];

$DBH = null;

Mise à JOUR 1:

Je sais que je peux ajouter de la limite de la requête sql, mais j'ai aussi envie de se débarrasser de la boucle foreach, que je ne devrait pas avoir besoin.

QUESTION DE DÉPART:

J'ai le script suivant qui est bon de l'OMI pour le retour, le nombre de lignes de la base de données en raison de la "foreach" section.

Comment puis-je optimiser, si je sais que je vais toujours obtenez seulement 1 ligne à partir de la base de données. Si je sais que je vais seulement chaque get 1 ligne à partir de la base de données, je ne vois pas pourquoi j'ai besoin de la boucle foreach, mais je ne sais pas comment changer le code.

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

230voto

superbly Points 1732

viens chercher. obtient seulement une rangée. Donc, pas de boucle foreach nécessaire: D

 $row  = $STH -> fetch();
 

exemple (ty northkildonan):

 $dbh = new PDO(" --- connection string --- "); 
$stmt = $dbh->prepare("SELECT name FROM mytable WHERE id=4 LIMIT 1"); 
$stmt->execute(); 
$row = $stmt->fetch();
 

17voto

strauberry Points 2456
$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;

Vous pouvez utiliser fetch et de LIMITER l'ensemble. LIMITE a pour effet que la base de données ne retourne qu'une seule entrée, de sorte PHP pour gérer de très peu de données. Avec fetch, vous obtenez la première (et la seule) d'entrée de suite à partir de la base de données de reponse.

Vous pouvez faire plus de l'optimisation par le réglage de la récupération de type, voir http://www.php.net/manual/de/pdostatement.fetch.php. Si vous avez accès uniquement via les noms de colonne, vous devez numérotés tableau.

Être conscient de la clause ORDER. Utilisez la COMMANDE ou OÙ obtenir le nécessaire de ligne. Sinon, vous obtiendrez la première ligne de la table tous les temps.

10voto

user3162468 Points 31

Vous pouvez essayer ceci pour une requête SELECT de base de données basée sur une entrée utilisateur à l'aide de 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);
 

9voto

Stephen Points 5339

Si vous voulez juste un seul champ, vous pouvez utiliser fetchColumn au lieu de fetch - http://www.php.net/manual/en/pdostatement.fetchcolumn.php

6voto

KoolKabin Points 3645

comment utiliser limit 0,1 pour l'optimisation de mysql

et à propos de votre code:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X