it-swarm.com.de

Einzelergebnis aus Datenbank mit mySQLi

Ich versuche, mySQLi zum ersten Mal zu verwenden. Ich habe es im Falle einer Schleife gemacht. Loop-Ergebnisse werden angezeigt, aber ich bin festgefahren, wenn ich versuche, eine einzelne Platte zu zeigen. Hier ist der Schleifencode, der funktioniert.

<?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
} 
?>

Der obige Code ist gut für den Fall von Schleife . Wie zeige ich nun einen einzelnen Datensatz, jeden Datensatz, Namen oder E-Mail-Adresse, aus der ersten Zeile oder was auch immer, nur einen Datensatz, wie würde ich das tun? Betrachten Sie im Fall eines einzelnen Datensatzes den gesamten obigen Loop-Teil als entfernt und lassen Sie jeden einzelnen Datensatz ohne Loop anzeigen.

15
Hiroshi Rana

betrachten Sie alle obigen Loop-Teile als entfernt

Machen Sie also, wie Sie gesagt haben: Entfernen Sie die Schleife aus dem Code und lassen Sie den Rest so wie er ist:

$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 />

Obwohl die Verwendung von Roh-API während des Lernens in Ordnung ist, sollten Sie in Zukunft einige Datenbank-Abstraktionsbibliotheken verwenden.
Es wird all Ihren Datenbankcode in 3 Zeilen umwandeln:

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

Wenn Sie nur von einem Ergebnis ausgehen, können Sie dies wie in Edwin vorgeschlagen mit einer bestimmten Benutzer-ID tun.

$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.

ODER als "Your Common Sense", bei dem nur ein Benutzer ausgewählt wird.

$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();

Es unterscheidet sich nicht wirklich von den oben genannten, außer fürPHP v.5 

6
MFAL

Verwenden Sie mysqli_fetch_row(). Versuche dies,

$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

Es gibt ein Beispiel in php.net, ist die # 4.

http://php.net/manual/de/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