3 回答

TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以在相應(yīng)的手冊(cè)頁上找到示例。
雖然贊成和缺點(diǎn)很簡(jiǎn)單:
get_result是處理結(jié)果的唯一理智方式
但它并不總是可用,你的代碼必須使用丑陋的bind_result進(jìn)行后備。
無論如何,如果你的想法是在應(yīng)用程序代碼中使用任何一個(gè)函數(shù) - 這個(gè)想法是錯(cuò)誤的。然而,只要你將它們封裝在一些方法中以從查詢中返回?cái)?shù)據(jù),那么使用哪一個(gè)并不重要,除了你需要十倍的代碼來實(shí)現(xiàn)bind_result這一事實(shí)。

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊
我注意到的主要區(qū)別在于,當(dāng)您嘗試在其他$ stmt中編譯嵌套的$ stmt時(shí),bind_result()
會(huì)出現(xiàn)錯(cuò)誤(正在獲?。?/strong>(不帶):2014
mysqli::store_result()
準(zhǔn)備失敗:(2014)命令不同步; 你現(xiàn)在不能運(yùn)行這個(gè)命令
例:
主代碼中使用的函數(shù)。
function GetUserName($id){ global $conn; $sql = "SELECT name FROM users WHERE id = ?"; if ($stmt = $conn->prepare($sql)) { $stmt->bind_param('i', $id); $stmt->execute(); $stmt->bind_result($name); while ($stmt->fetch()) { return $name; } $stmt->close(); } else { echo "Prepare failed: (" . $conn->errno . ") " . $conn->error; }}
主要代碼。
$sql = "SELECT from_id, to_id, content FROM `direct_message` WHERE `to_id` = ?";if ($stmt = $conn->prepare($sql)) { $stmt->bind_param('i', $myID); /* execute statement */ $stmt->execute(); /* bind result variables */ $stmt->bind_result($from, $to, $text); /* fetch values */ while ($stmt->fetch()) { echo "<li>"; echo "<p>Message from: ".GetUserName($from)."</p>"; echo "<p>Message content: ".$text."</p>"; echo "</li>"; } /* close statement */ $stmt->close();} else { echo "Prepare failed: (" . $conn->errno . ") " . $conn->error;}
添加回答
舉報(bào)