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.
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");
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
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'];
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']));
?>