<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 本文仅供学习与参考,内容关于 PHP 中 mysqli_stmt::fetch 的使用准备工作</span></span><span>
</span><span><span class="hljs-comment">// -------------------------------------------</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
<h1>在执行 mysqli_stmt::</span><span><span class="hljs-variable constant_">fetch</span></span><span> 前需要做哪些准备工作才能保证顺利?</h1>
<p>在使用 <code>mysqli_stmt::</span><span><span class="hljs-variable constant_">fetch</span></span><span>
使用 prepare() 方法准备一条 SQL 查询语句,通常包含占位符(?)以防止 SQL 注入:
</span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"SELECT name, email FROM users WHERE id = ?"</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$stmt</span></span><span>) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"预处理失败: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->error);
}
如果查询语句中包含了 ? 占位符,就需要使用 bind_param() 将用户输入绑定到语句中:
</span><span><span class="hljs-variable">$userId</span></span><span> = </span><span><span class="hljs-number">5</span></span><span>;
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"i"</span></span><span>, </span><span><span class="hljs-variable">$userId</span></span><span>); </span><span><span class="hljs-comment">// "i" 表示整数类型</span></span><span>
通过 execute() 方法执行 SQL 语句:
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">execute</span></span><span>()) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"执行失败: "</span></span><span> . </span><span><span class="hljs-variable">$stmt</span></span><span>->error);
}
在调用 fetch() 之前,必须先通过 bind_result() 方法绑定结果集的列到 PHP 变量:
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">bind_result</span></span><span>(</span><span><span class="hljs-variable">$name</span></span><span>, </span><span><span class="hljs-variable">$email</span></span><span>);
现在可以使用 fetch() 获取一行数据,并自动将结果填充到之前绑定的变量中:
</span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">fetch</span></span><span>()) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"姓名: <span class="hljs-subst">$name</span></span></span><span>, 邮箱: </span><span><span class="hljs-subst">$email</span></span><span><br>";
}
最后,关闭语句与连接:
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
在调用 mysqli_stmt::fetch 之前的准备步骤包括:创建连接、准备语句、绑定输入参数、执行语句、绑定结果变量。每一个步骤都至关重要,缺一不可,确保这些准备工作完成后,fetch() 才能顺利返回结果。
相关标签:
mysqli_stmt