Я всегда передавал массив своих значений в execute, так как казалось, что imo легче читать. Недавно я работал над сценарием и заметил, что он использует bindParam, а позже пришел выяснить, как он передает ссылку на переменную (я никогда не знал).
С учетом сказанного в текущем проекте я могу придумать довольно много вариантов использования bindParam вместо моего текущего использования массива.
С учетом сказанного, есть ли разница в производительности между bindValue / bindParam и использованием массива при выполнении … особенно в случае повторяющихся циклов? Я делаю много $stmt->execute( array_merge($binding_clause, $binding) );
где у меня есть несколько привязок, которые не будут меняться, и некоторые, которые, конечно, будут циклически изменяться, где, насколько я могу судить, использование bindParam было бы идеально для этого.
Имеет ли добавление типа (PDO :: PARAM_STR, PDO :: PARAM_INT) с первым какую-либо производительность по сравнению с неиспользованием при использовании массива (я считаю, что это строка по умолчанию с массивами)?
Пример разницы между ними (это подготовленные операторы):
$binding = array(
'cw_account_id' => $_SESSION['user']['account_id'],
'cw_date_start' => $date_start,
'cw_date_end' => $date_end,
'cw_start' => $b_counter * 500
);
$stmt->execute($binding);
compared to
$stmt->bindValue(':cw_account_id', $_SESSION['user']['account_id'], PDO::PARAM_INT);
$stmt->bindValue(':cw_date_start', $date_start, PDO::PARAM_INT);
$stmt->bindValue(':cw_date_end', $date_end, PDO::PARAM_INT);
$stmt->bindValue(':cw_start', $b_counter * 500, PDO::PARAM_INT);
$stmt->execute();
Помимо вопросов выше, каждый $stmt->bindValue()
здесь будет еще одна поездка в БД по сравнению с одним при использовании метода массива?
Помимо читабельности кода и того, как bindParam ссылается на значения, существуют ли положительные / отрицательные значения производительности между ними (использование в малых и больших масштабах … включены повторяющиеся циклы)?
Помимо читабельности кода и того, как bindParam ссылается на значения, существуют ли плюсы / минусы производительности между двумя
Нет.
будет ли каждый $ stmt-> bindValue () быть другой поездкой в БД
Нет.
Других решений пока нет …