Преимущество использования массива execute по сравнению с прямым методом bind_param

В чем преимущество использования массива execute по сравнению с прямым методом bind_param, т.е.

$stmtt = $conn->prepare($sql);

$stmt->bindParam(':title', $_POST['title '], PDO::PARAM_STR);
$stmt->execute();

1

Решение

Есть два преимущества, о которых я мог подумать. (1) Вы можете указать тип данных с bindParam или же bindValueпри использовании массива execute все будет обрабатываться как строка. Способный к указанному типу данных может быть очень удобным в некоторых случаях. Например:

 // 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();
}
0

Другие решения

Других решений пока нет …