使用mySQLi从数据库中获得单个结果

Hir*_*ana 19 php mysqli loops

我想第一次使用mySQLi.我已经在循环的情况下完成了它.循环结果显示但我在尝试显示单个记录时卡住了.这是循环代码正在工作.

<?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
} 
?>
Run Code Online (Sandbox Code Playgroud)

上面的代码在循环的情况下很好.现在我如何从第一行或其他任何地方显示单个记录,任何记录,名称或电子邮件,只是单个记录,我该怎么做?在单记录的情况下,考虑删除所有上面的循环部分,并让我们显示没有循环的任何单个记录

You*_*nse 45

考虑删除所有上面的循环部分

所以,就像你说的那样:从代码中删除循环,剩下的就是:

$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 />
Run Code Online (Sandbox Code Playgroud)

顺便说一句,虽然在学习的同时使用原始api是可以的,但考虑将来使用一些数据库抽象库.
它会将您的所有数据库代码转换为3行:

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

  • 你需要知道OOP只能写*类.使用它们时不需要任何特殊知识,它就像调用常规函数一样简单.唯一的区别是在函数名之前有一个小前缀`$ class->`.其余的都是一样的. (6认同)

Edw*_*lex 7

使用 mysqli_fetch_row(). 尝试这个,

$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'];
Run Code Online (Sandbox Code Playgroud)

  • 你不能用 mysqli_fetch_row 来做到这一点,因为它返回一个枚举数组。例如:`$row[0], $row[1]` 如果要指定字段名称,则需要使用 mysqli_fetch_assoc,它返回一个关联数组。例如:`$row['ssfullname'];` (4认同)

MFA*_*FAL 6

如果您只假设一个结果,则可以使用特定用户ID建议的Edwin建议.

$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.
Run Code Online (Sandbox Code Playgroud)

或者作为"您的常识",它只选择一个用户.

$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();
Run Code Online (Sandbox Code Playgroud)

除了PHP v.5之外,与上面没有什么不同