php mysqli oop从表中获取数据错误

frebpwbc  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(269)

我想用php-mysqli从我的表中只取一行。它使用prepared语句,但我不能这样做,而且我的代码没有显示任何内容。我该怎么办?

<?php
require_once 'inc/db.inc.php';

$post_id = $_GET['id'];

$q = "SELECT post_id, post_name, post_title, post_content, post_author, post_short_des, post_tag, post_date FROM posts WHERE post_id=? LIMIT 1";
$stmt = $conn->prepare($q);
$stmt->bind_param('i', $post_id);
$stmt->execute();
$stmt->bind_result($post_id, $post_name, $post_title, $post_content, $post_author, $post_short_des, $post_tag, $post_date);
$stmt->fetch();

print_r($stmt);
cunj1qz1

cunj1qz11#

您需要绑定结果,然后获取它们。既然你有 LIMIT 1 ,不需要循环任何内容,因为无论如何只会获取一行。
请注意 SELECT * ,我们现在选择一列,在本例中,我们从列中选择 content (在数据库表中显示时进行更改)。所选列的数量与绑定的变量相匹配是很重要的 mysqli_stmt_bind_result() . 您可以选择多个列,只需用逗号分隔即可。

$post_id = $_GET['id'];

$q = "SELECT content FROM posts WHERE post_id=? LIMIT 1";
$stmt = mysqli_prepare($dbc, $q);
mysqli_stmt_bind_param($stmt, 'i', $post_id);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $content);
mysqli_stmt_fetch($stmt);

if (mysqli_stmt_num_rows($stmt)) {
    echo $content;
} else {
    echo "No data";
}

http://php.net/mysqli-stmt.bind-result
http://php.net/mysqli-stmt.fetch
我是用手机写的,所以可能有一些错误。不过,文档中给出了很好的示例。

相关问题