Я знаю, что закрытие подготовленных операторов рекомендуемая вещь .
Но у меня есть сценарий PHP, подобный этому:
$sql = "SELECT * FROM `mytable` WHERE ...";
$stmt = $dbh->stmt_init();
if($stmt->prepare($sql))
{
$stmt->bind_param("s", $user);
if($stmt->execute())
{
$result = $stmt->get_result();
$stmt->close();
} else
header("Location: .?error=unknown");
} else
header("Location: .?error=conn");
Оператор закрывается, если все в порядке, но когда что-то не работает во время выполнения, оно не закрывается.
Должен ли я писать
else {
$stmt->close();
header("Location: .?error=unknown");
}
и
else {
$stmt->close();
header("Location: .?error=conn");
}
или, поскольку произошла ошибка, мне не следует беспокоиться о закрытии оператора?
Или я мог бы даже написать:
$sql = "SELECT * FROM `mytable` WHERE ...";
$stmt = $dbh->stmt_init();
if($stmt->prepare($sql))
{
$stmt->bind_param("s", $user);
if($stmt->execute())
{
$result = $stmt->get_result();
} else
header("Location: .?error=unknown");
} else
header("Location: .?error=conn");
/*some other code*/
$stmt->close; //close every statement at the very end of the script
или лучше закрыть готовые заявления сразу после того, как я их использую, чтобы избежать каких-либо ошибок?