使用 execute 数组与直接 bind_param 方法相比的优势
The advantage of using the execute array versus the direct bind_param method
使用执行数组与直接 bind_param 方法相比有什么优势,即
$stmtt = $conn->prepare($sql);
$stmt->bindParam(':title', $_POST['title '], PDO::PARAM_STR);
$stmt->execute();
我能想到的优点有两个。 (1) 您可以使用bindParam
或bindValue
指定数据类型,而使用execute array 会将所有内容视为字符串。能够指定数据类型在某些情况下会非常方便。例如:
// Return the correct result
$sh = $db->prepare("SELECT * FROM items LIMIT :offset,:length");
$sh->bindValue(":offset", 0, PDO::PARAM_INT);
$sh->bindValue(":length", 10, PDO::PARAM_INT);
$sh->execute();
// Does not return any result, unless you set PDO::ATTR_EMULATE_PREPARES to FALSE
$sh = $db->prepare("SELECT * FROM items LIMIT :offset,:length");
$sh->execute(array(
"offset" => 0,
"length" => 10
));
(2) 如果要插入多次,bindParam
会更简单。例如:
$sh = $db->prepare("INSERT INTO news_tags(news_id, tag) VALUES(:id, :tag)");
$sh->bindValue(":id", 2);
$sh->bindParam(":tag", $tag);
foreach($tags as $value) {
$tag = $value;
$sh->execute();
}
使用执行数组与直接 bind_param 方法相比有什么优势,即
$stmtt = $conn->prepare($sql);
$stmt->bindParam(':title', $_POST['title '], PDO::PARAM_STR);
$stmt->execute();
我能想到的优点有两个。 (1) 您可以使用bindParam
或bindValue
指定数据类型,而使用execute array 会将所有内容视为字符串。能够指定数据类型在某些情况下会非常方便。例如:
// Return the correct result
$sh = $db->prepare("SELECT * FROM items LIMIT :offset,:length");
$sh->bindValue(":offset", 0, PDO::PARAM_INT);
$sh->bindValue(":length", 10, PDO::PARAM_INT);
$sh->execute();
// Does not return any result, unless you set PDO::ATTR_EMULATE_PREPARES to FALSE
$sh = $db->prepare("SELECT * FROM items LIMIT :offset,:length");
$sh->execute(array(
"offset" => 0,
"length" => 10
));
(2) 如果要插入多次,bindParam
会更简单。例如:
$sh = $db->prepare("INSERT INTO news_tags(news_id, tag) VALUES(:id, :tag)");
$sh->bindValue(":id", 2);
$sh->bindParam(":tag", $tag);
foreach($tags as $value) {
$tag = $value;
$sh->execute();
}