我正在尝试第一次使用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 } ?>
上面的代码在循环的情况下很好。现在,如何显示第一行中的任何记录,任何记录,名称或电子邮件,或者仅显示单个记录,我该怎么做?在单个记录的情况下,请考虑删除所有上述循环部分,并显示没有循环的任何单个记录。
当仅需要单个结果时,则不应使用循环。只需立即获取该行。
如果您需要将整个行提取到关联数组中:
$row = $result->fetch_assoc();
万一你只需要一个值
$row = $result->fetch_row();
$value = $row[0];
以下是针对不同用例的完整示例
当在查询中使用变量时,则必须使用 准备好的语句 。例如,假设我们有一个变量$id:
$id
$query = "SELECT ssfullname, ssemail FROM userss WHERE ud=?"; $stmt = $conn->prepare($query); $stmt->bind_param("s", $id); $stmt->execute() $result = $stmt->get_result(); // in case you need an array $row = $result->fetch_assoc(); // OR in case you need just a single value $row = $result->fetch_row(); $value = $row[0];
在我的文章中可以找到有关上述过程的详细说明。至于为什么必须遵循它,在这个著名的问题中得到了解释
在您的情况下,如果查询中不使用任何变量,则可以使用以下query()方法:
query()
$query = "SELECT ssfullname, ssemail FROM userss ORDER BY ssid"; $result = $conn->($query); // in case you need an array $row = $result->fetch_assoc(); // OR in case you need just a single value $row = $result->fetch_row(); $value = $row[0];
顺便说一下,尽管可以在学习的同时使用原始API,但是将来可以考虑使用一些数据库抽象库。 它将 所有 数据库代码转换为3行:
include 'database.class.php'; $db = new DB(); $row = $db->getRow("SELECT ssfullname, ssemail FROM userss ORDER BY ssid LIMIT 1");