web-dev-qa-db-fra.com

retourner une valeur de la base de données avec mysql php pdo

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. : \

24
Amber Stillwell

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
]);
15
asprin

Vous pouvez utiliser fetchColumn():

$q= $conn->query("SELECT name FROM `login_users` WHERE username='$userid'");
$username = $q->fetchColumn();
52
Ouadie

http://php.net/manual/en/pdostatement.fetchcolumn.php j'espère que cela résoudra votre problème.

22
ARIF MAHMUD RANA

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.

2
Marc B