php中的mysqli_stmt_fetch是做什么的?

问题描述 投票:0回答:2

我不明白fetch函数的概念。

我正在做《PHP 解决方案》一书中的教程,我正在使用 MySQL 改进来更新数据库中的某些内容。

这是代码:

$sql = 'SELECT article_id, title, article FROM journal WHERE article_id = ?';
$stmt = $conn->stmt_init();
$stmt->prepare($sql);
$stmt->bind_param('i', $_GET['article_id']);                    
$stmt->bind_result($article_id, $title, $article); 
//execute the query, and fetch the result
$stmt->execute(); 
$stmt->fetch();

那么 fetch 到底在做什么呢?我认为execute()函数将信息发送到数据库,然后它向$OK变量返回一个真/假值。

fetch() 是否在 $stmt 中存储了某些内容?有人知道它在做什么吗?

php mysqli fetch
2个回答
10
投票

很难预测示例中这一行之前的内容,但一般来说 fetch 函数用于从数据库收到的结果集中获取当前行。您可以阅读这里


-1
投票

您提供的代码是一个 PHP 脚本,它似乎是较大应用程序的一部分。让我们分解一下代码的相关部分,以帮助您理解 fetch 函数的概念:

数据库连接: 该脚本假定您有一个存储在变量 $conn 中的数据库连接。此连接可能是使用 PHP 中的 MySQL 改进 (mysqli) 扩展建立的。

SQL查询准备: 该脚本准备一个 SQL SELECT 语句,根据提供的article_id 从“journal”表中获取数据:

$sql = '从期刊中选择文章 ID、标题、文章,其中文章 ID = ?'; 它使用带有占位符 (?) 的参数化查询作为article_id。

语句初始化: 该脚本使用 $conn->stmt_init() 初始化准备好的语句:

$stmt = $conn->stmt_init(); 这准备了语句对象,这是使用准备好的语句所必需的。

绑定参数: 该脚本将article_id参数绑定到准备好的语句:

$stmt->bind_param('i', $_GET['article_id']); 这会将 $_GET['article_id'] 的值绑定到准备好的语句中的参数占位符。 bind_param中的'i'表示该参数是一个整数。

绑定结果变量: 该脚本将变量绑定到结果集列:

$stmt->bind_result($article_id, $title, $article); 这准备变量来存储从查询结果检索到的值。

执行查询: 该脚本执行准备好的语句:

$OK = $stmt->execute(); 如果查询执行成功则返回 true,否则返回 false。

获取结果: 最后,脚本使用 fetch 函数获取结果集:

$stmt->fetch(); 此函数使用从数据库检索的值填充绑定变量($article_id、$title、$article)。

在此代码块之后,您可以使用 $article_id、$title 和 $article 中存储的值进行进一步处理或在网页上显示信息。

需要注意的是,如果 $_GET['article_id'] 值未正确清理,此脚本很容易受到 SQL 注入的攻击。考虑使用准备好的语句或适当的输入验证来防止 SQL 注入攻击。

© www.soinside.com 2019 - 2024. All rights reserved.