web-dev-qa-db-fra.com

Résultat unique de la base de données en utilisant mySQLi

J'essaie d'utiliser mySQLi pour la première fois. Je l'ai fait en cas de boucle. Les résultats des boucles sont en train de montrer, mais je suis bloqué lorsque j'essaie de montrer un seul enregistrement. Voici le code de boucle qui fonctionne.

<?php
// Connect To DB
$hostname="localhost";
$database="mydbname";
$username="root";
$password="";

@$conn = mysqli_connect($hostname, $username, $password)
        or die("Could not connect to server " . mysql_error()); 
    mysqli_select_db($conn, $database)
        or die("Error: Could not connect to the database: " . mysql_error());

    /*Check for Connection*/
    if(mysqli_connect_errno()){
        // Display Error message if fails
        echo 'Error, could not connect to the database please try again again.';
    exit();
    }
?>

<?php
$query = "SELECT ssfullname, ssemail FROM userss ORDER BY ssid";
$result = mysqli_query($conn, $query);
@$num_results = mysqli_num_rows($result);
?>

<?php
/*Loop through each row and display records */
for($i=0; $i<$num_results; $i++) {
$row = mysqli_fetch_assoc($result);
?>

<?php // echo 'Name' .$row['ssfullname'] . 'email' . $row['ssemail'] . "\n"; ?>

Name: <?php print $row['ssfullname']; ?>
<br />
Email: <?php print $row['ssemail']; ?>
<br /><br />

<?php 
// end loop
} 
?>

Le code ci-dessus convient parfaitement en cas de boucle… .. Maintenant, comment puis-je afficher un enregistrement, un enregistrement, un nom ou un e-mail, de la première ligne ou autre chose, un seul enregistrement, comment puis-je le faire? Dans le cas d’un enregistrement unique, considérez que toutes les parties de boucle ci-dessus ont été supprimées et permet d’afficher tout enregistrement unique sans boucle.

15
Hiroshi Rana

considérer toutes les parties de boucle ci-dessus retirées

Alors, faites comme vous avez dit: supprimez la boucle du code, en laissant le reste tel quel:

$query = "SELECT ssfullname, ssemail FROM userss ORDER BY ssid";
$result = mysqli_query($conn, $query);
$row = mysqli_fetch_assoc($result);
?>
Name: <?=$row['ssfullname']?><br />
Email: <?=$row['ssemail']?><br />

Soit dit en passant, bien que l’utilisation d’API brute pendant l’apprentissage soit acceptable, envisagez d’utiliser une bibliothèque d’abstraction de base de données ultérieurement.
Il transformera tous votre code de base de données en 3 lignes:

include 'database.class.php';
$db  = new DB();
$row = $db->getRow("SELECT ssfullname, ssemail FROM userss ORDER BY ssid LIMIT 1");
39
Your Common Sense

Si vous supposez un seul résultat, vous pouvez le faire comme le suggère Edwin en utilisant un identifiant d'utilisateur spécifique.

$someUserId = 'abc123';

$stmt = $mysqli->prepare("SELECT ssfullname, ssemail FROM userss WHERE user_id = ?");
$stmt->bind_param('s', $someUserId);

$stmt->execute();

$stmt->bind_result($ssfullname, $ssemail);
$stmt->store_result();
$stmt->fetch();

ChromePhp::log($ssfullname, $ssemail); //log result in chrome if ChromePhp is used.

OU en tant que "Votre sens commun" qui sélectionne un seul utilisateur.

$stmt = $mysqli->prepare("SELECT ssfullname, ssemail FROM userss ORDER BY ssid LIMIT 1");

$stmt->execute();
$stmt->bind_result($ssfullname, $ssemail);
$stmt->store_result();
$stmt->fetch();

Rien de très différent de ce qui précède, sauf pourPHP v.5 

6
MFAL

Utilisez mysqli_fetch_row(). Essaye ça,

$query = "SELECT ssfullname, ssemail FROM userss WHERE user_id = ".$user_id;
$result = mysqli_query($conn, $query);
$row   = mysqli_fetch_row($result);

$ssfullname = $row['ssfullname'];
$ssemail    = $row['ssemail'];
1
Edwin Alex

Il y a un exemple dans php.net, est le # 4.

http://php.net/manual/en/mysqli.quickstart.statements.php

<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

if (!$mysqli->query("DROP TABLE IF EXISTS test") ||
    !$mysqli->query("CREATE TABLE test(id INT, label CHAR(1))") ||
    !$mysqli->query("INSERT INTO test(id, label) VALUES (1, 'a')")) {
    echo "Table creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

$res = $mysqli->query("SELECT id, label FROM test WHERE id = 1");
$row = $res->fetch_assoc();

printf("id = %s (%s)\n", $row['id'], gettype($row['id']));
printf("label = %s (%s)\n", $row['label'], gettype($row['label']));
?>
0
RaRdEvA