Je n'essaye pas d'utiliser une boucle. J'ai juste une valeur d'une colonne d'une ligne. J'ai obtenu ce que je veux avec le code suivant, mais il doit y avoir un moyen plus simple d'utiliser PDO.
try {
$conn = new PDO('mysql:Host=localhost;dbname=advlou_test', 'advlou_wh', 'advlou_wh');
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
$userid = 1;
$username = $conn->query("SELECT name FROM `login_users` WHERE username='$userid'");
$username2 = $username->fetch();
$username3 = $username2['name'];
echo $username3;
Cela ressemble à trop de lignes pour obtenir une valeur de la base de données. : \
Vous pouvez créer une fonction pour cela et appeler cette fonction chaque fois que vous avez besoin d'une seule valeur
function getSingleValue($tableName, $prop, $value, $columnName)
{
$q = $conn->query("SELECT `$columnName` FROM `$tableName` WHERE $prop='".$value."'");
$f = $q->fetch();
$result = $f[$columnName];
return $result;
}
Ensuite, vous pouvez simplement faire:
$singleValue = getSingleValue('login_users', 'username', $userid, 'name'); // will get you the value
Vous devez donc créer cette fonction une seule fois, mais vous pouvez la réutiliser pour différentes tables avec des noms de colonne différents.
COMMUNITY EDIT: Pour des raisons de sécurité, évitez de concaténer des chaînes pour former une requête SQL, utilisez plutôt des instructions préparées.
Ainsi, au lieu des personnes vulnérables
$q = $conn->query("SELECT `$columnName` FROM `$tableName` WHERE $prop='".$value."'");
Utilisez le code correspondant avec les instructions préparées
$q = $conn->prepare('SELECT :columnName FROM :tableName WHERE :property=:value', [
'columName' => $columnName,
'tableName' => $tableName,
'property' => $prop,
'value' => $value
]);
Vous pouvez utiliser fetchColumn()
:
$q= $conn->query("SELECT name FROM `login_users` WHERE username='$userid'");
$username = $q->fetchColumn();
http://php.net/manual/en/pdostatement.fetchcolumn.php j'espère que cela résoudra votre problème.
Tout comme c'est beaucoup trop de travail pour avoir à monter dans votre voiture, conduire au magasin, frayez-vous un chemin à travers la foule, prenez le pot de lait dont vous avez besoin, puis battez-vous pour rentrer chez vous, juste pour pouvoir avoir un milk-shake.
Toutes ces étapes sont nécessaires et chaque étape suivante dépend des précédentes qui ont été effectuées.
Si vous effectuez cette opération à plusieurs reprises, enveloppez certainement une fonction autour d'elle afin de pouvoir la réutiliser et la réduire à un seul appel getMyValue()
- mais en arrière-plan, tout ce code doit toujours être présent.