0
我很新的PHP编码,并设法自己解决很多问题,但有1我不能让我的头转过身来。警告:mysqli_stmt :: close():无法在X行上获取mysqli_stmt Y行
$prep_stmt = "SELECT id FROM members WHERE Email = ? LIMIT 1";
$stmt = $mysqli->prepare($prep_stmt);
// check existing Email
if ($stmt) {
$stmt->bind_param('s', $Email);
$stmt->execute();
$stmt->store_result();
if ($stmt->num_rows == 1) {
// A user with this Email address already exists
$error_msg .= '<p class="error">A user with this Email address already exists.</p>';
$stmt->close();
}
$stmt->close();
} else {
$error_msg .= '<p class="error">Database error Line 39</p>';
$stmt->close();
}
我的猜测是,代码无法进入第二$stmt->close();
在上面的代码(一前一后的,如果里面的IF)。
我该如何解决这个问题? $stmt->close();
真的需要吗?
那么你可以包装在一个一个'其他{}'块,但说实话,没有显式调用来'$ stmt-> close()方法'可能是必要的。 PHP将自行清理它们。 – 2014-09-13 13:10:18
@MichaelBerkowski,所以它可以安全地删除所有这些? (发布一个答案,所以我可以给一些代表:)) – Krowi 2014-09-13 13:11:37
可能。如果有要读取的行,[调用'$ stmt-> close()'](http://php.net/manual/en/mysqli-stmt.close.php)释放RDBMS执行一个新的查询,但是如果你不打算在这个脚本中发出一个新的查询,这不是问题,因为PHP会在脚本终止时清除它们。另外,如果我没有记错,调用'store_result()'无论如何都避开了这个问题。 – 2014-09-13 13:14:51