我第一次尝试使用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
}
?>
以上代码在循环的情况下很好。 现在我如何从第一行或其他任何地方显示单个记录,任何记录,名称或电子邮件,只是单个记录,我该怎么做? 在单个记录的情况下,考虑删除所有上面的循环部分,并让我们显示没有循环的任何单个记录。
答案 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'];
这应该可以解决问题