當前位置: 首頁> 最新文章列表> 在執行mysqli_stmt::fetch 前需要做哪些準備工作才能保證順利?

在執行mysqli_stmt::fetch 前需要做哪些準備工作才能保證順利?

gitbox 2025-09-26
<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>

2 . 準備SQL 語句

使用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);
}

3 . 綁定輸入參數(如果有)

如果查詢語句中包含了?佔位符,就需要使用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>

4 . 執行語句

通過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);
}

5 . 綁定結果變量

在調用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>);

6 . 調用fetch () 獲取結果

現在可以使用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>&lt;br&gt;";
}

7 . 資源清理

最後,關閉語句與連接:

 </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()才能順利返回結果。