Можно ли использовать один параметр в подготовленном mysqli– состоянии несколько раз с привязкой только один раз ?
что-то вроде этого
$stmt = $mysqli->prepare(SELECT * FROM user WHERE age BETWEEN ?1 - 2 AND ?1 + 2); $stmt->bind_param('i', $myAge);
Я думаю, что это возможно с PDO
, но я не знаю, как это сделать с mysqli
.
Чтобы закрыть вопрос:
Ответ – нет .
Если вы хотите связать параметр только один раз и использовать его несколько раз в запросе, вы должны использовать PDO, и это может также потребоваться специальная конфигурация.
Но, похоже, больше причин использовать PDO вместо mysqli, в соответствии с этим замечательным ответом или этим .
Но обязательно есть обходные пути. См. Другие ответы на этот вопрос.
Вы можете использовать это вместо этого
$stmt = $mysqli->prepare(SELECT * FROM user WHERE age BETWEEN ? - 2 AND ? + 2); $stmt->bind_param('ii', $my_age, $my_age);
Вы можете использовать execute без bind_param. Я использую array_fill, чтобы сделать трюк.
$stmt->execute(array_fill(0, 1, $myage));
Вы можете редактировать значения array_fill в зависимости от оператора. Предположим, что у вас есть 3 значения для заполнения, вы можете использовать:
$stmt->execute(array_fill(0, 2, $myage));