57 votes

PHP - Un moyen simple de lire un enregistrement à partir de MySQL

Quel est le meilleur moyen avec PHP de lire un seul enregistrement depuis une base de données MySQL? Par exemple:

 SELECT id FROM games
 

J'essayais de trouver une réponse aux anciennes questions, mais sans succès.

56voto

Dan Grossman Points 31514
$id = mysql_result(mysql_query("SELECT id FROM games LIMIT 1"),0);

31voto

 $link = mysql_connect('localhost','root','yourPassword')
mysql_select_db('database_name', $link);
$sql = 'SELECT id FROM games LIMIT 1';
$result = mysql_query($sql, $link) or die(mysql_error());
$row = mysql_fetch_assoc($result);
print_r($row);
 

Il manquait peu de choses dans la réponse de ChrisAD. Après la connexion à mysql, il est crucial de sélectionner la base de données. En outre, l'instruction die() vous permet de voir les erreurs si elles se produisent.

Attention, cela ne fonctionne que si vous avez 1 enregistrement dans la base de données, car sinon vous devez ajouter WHERE id=xx ou quelque chose de similaire pour obtenir une seule ligne et pas plus. Aussi, vous pouvez accéder à votre identifiant comme $row['id']

22voto

Tom Haigh Points 32314

En utilisant PDO, vous pouvez faire quelque chose comme ceci:

 $db = new PDO('mysql:host=hostname;dbname=dbname', 'username', 'password');

$stmt = $db->query('select id from games where ...');
$id = $stmt->fetchColumn(0);
if ($id !== false) {
    echo $id;
}
 

Vous devez évidemment aussi vérifier si PDO::query() exécute la requête correctement (en vérifiant le résultat ou en demandant à PDO de générer des exceptions à la place)

15voto

prl77 Points 151

En supposant que vous utilisez un auto-incrémentation de la clé primaire, ce qui est la façon normale de faire les choses, alors vous pouvez accéder à la valeur de la clé de la dernière ligne que vous mettez dans la base de données avec:

$userID = mysqli_insert_id($link);

sinon, vous devrez savoir plus de détails sur la ligne que vous essayez de trouver, telles que l'adresse e-mail. Sans connaître votre structure de la table, nous ne pouvons pas être plus précis.

De toute façon, à la limite de votre SELECT de la requête, utilisez un WHERE déclaration comme ceci: Générique (Exemple)

$getID = mysqli_fetch_assoc(mysqli_query($link, "SELECT userID FROM users WHERE something = 'unique'"));
$userID = $getID['userID'];

(Exemple concret) Ou un exemple plus spécifique:

$getID = mysqli_fetch_assoc(mysqli_query($link, "SELECT userID FROM users WHERE userID = 1"));
$userID = $getID['userID'];

9voto

Robert K Points 14893

Avertissement! Votre SQL n'est pas une bonne idée, car cela permet de sélectionner toutes les lignes (pas de clause where assume", OÙ "1"!) et de boucher votre application si vous avez un grand nombre de lignes. (Ce qui est le point de sélection de 1 000 lignes lors de la 1 va faire?) Donc, au lieu de cela, lors de la sélection d'une seule ligne, assurez-vous de spécifier la clause LIMIT:

$sql = "SELECT id FROM games LIMIT 1";  // Select ONLY one, instead of all
$result = $db->query($sql);
$row = $result->fetch_assoc();
echo 'Game ID: '.$row['id'];

Cette différence nécessite MySQL pour sélectionner uniquement le premier enregistrement correspondant, afin de commander la table est important, ou vous devez utiliser une clause where. Cependant, c'est beaucoup moins de mémoire et de temps pour trouver qu'un seul enregistrement, que pour obtenir chaque enregistrement et la sortie d'un numéro de ligne.

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