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

时间:2013-01-31 11:20:09

标签: php loops mysqli

我第一次尝试使用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
} 
?>

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

5 个答案:

答案 0 :(得分:42)

  

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

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

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

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

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

答案 1 :(得分:0)

使用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'];

答案 2 :(得分:0)

php.net中有一个例子,是#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']));
?>

答案 3 :(得分:0)

不要使用 $row = $query->fetch(); 尝试使用:

$result = $query->get_result();
$row=$result->fetch_assoc();

每次您都可以通过使用以下方法显示它们来检查是否从 mysql 表中获取数据:

var_export( $row['put here colomn name'] );

答案 4 :(得分:0)

第一个答案将完成工作,但在这种情况下,您不需要循环结果。

$row = $result->fetch_row();

只需回显列

  echo   $row['column']; 

这应该可以解决问题