相关疑难解决方法(0)

PDO是否始终默认使用模拟的预准备语句?

PDO具有PDO::ATTR_EMULATE_PREPARES控制是否应仅在DB不支持或始终模拟准备语句的选项.但是,它没有提到它是否总是默认模拟它们.

通常人们会认为仿真只在必要时才使用,但因为它是PHP,所以没有什么可以假设只是因为它是理智的......

php pdo prepared-statement

11
推荐指数
1
解决办法
3517
查看次数

PHP ::: Prepared Statements ::: freeresult()::: close()

使用的重要性是什么:

$stmt->free_result();
$stmt->close();
Run Code Online (Sandbox Code Playgroud)

在使用这样的准备好的语句进行数据库调用之后:

$mysqli=new mysqli("database", "db", "pass", "user");

$stmt = $mysqli->prepare("SELECT email FROM users WHERE id=? ");
$stmt->bind_param('i',$_SESSION['id']);
$stmt->execute();
$stmt->bind_result($email);
while($stmt->fetch()){
     echo $email;
}
$stmt->free_result(); //why do i need this?
$stmt->close();       //why do i need this?
Run Code Online (Sandbox Code Playgroud)

我问,因为没有它们我没有看到任何明显的性能下降.这些命令通常仅用于存储结果时使用:

$stmt->store_result();
Run Code Online (Sandbox Code Playgroud)

像这样:

$mysqli=new mysqli("database", "db", "pass", "user");

$stmt = $mysqli->prepare("SELECT email FROM users WHERE id=? ");
$stmt->bind_param('i',$_SESSION['id']);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($email);
while($stmt->fetch()){
     echo $email;
}
$stmt->free_result(); //why do i need this?
$stmt->close();       //why do i need this?
Run Code Online (Sandbox Code Playgroud)

最终问题归结为何时适合使用freeresult()和close()?

php prepared-statement

5
推荐指数
1
解决办法
430
查看次数

标签 统计

php ×2

prepared-statement ×2

pdo ×1