Вы получаете ошибку «..number связанных переменных ...», потому что, как говорит @Xatenev, вам не нужно заключать в кавычки знаки места.PDO готовит строку '...BETWEEN :date_start AND ...
, т. Е. Она ищет дату с STRING VALUE OF ': date_start', которая предположительно не существует, вместо того, чтобы искать значение даты со значением :date_start
.Если это должно выглядеть следующим образом:
from service where(date BETWEEN :date_start .....
, чтобы просто немного расширить, то возникает настоящая ошибка, потому что вы пытаетесь связать значения для каждого из указанных заполнителей, но PDO вообще не может видеть эти заполнители, так как всеон может интерпретировать некоторые строки, которые вы добавили, и две метки
Если вы удалите кавычки, он больше не будет воспринимать это как строку и будет рассматривать его как маркер места, как и предполагалось
ОБНОВЛЕНИЕ -
Re комментарии ОП о не совсем понимании, представьте, что у вас есть переменная $values
$ values [] содержит «варенье», «хлеб» или «арахисовое масло» в зависимости от ввода,Таким образом, вы хотите вставить в таблицу с именем sandwich_parts и создать запрос на основе ввода (или выбора, или цикла для чего угодно)
foreach($values as $value){
$q1->prepare("INSERT INTO sandwich_parts (part) values (':value'));
$q2->prepare("INSERT INTO sandwich_parts (part) values (:value));
$q->bindValue(':value',$value,PDO::PARAM_STR);
}
, который будет отправлен mysql при execute () как
INSERT INTO sandwich_parts (part) values (':value')
INSERT INTO sandwich_parts (part) values ('jam')
INSERT INTO sandwich_parts (part) values (':value')
INSERT INTO sandwich_parts (part) values ('bread')
INSERT INTO sandwich_parts (part) values (':value')
INSERT INTO sandwich_parts (part) values ('peanut butter')
, потому что первая вставка всегда читает строку ': значение', тогда как вторая видит маркер места и привязывает параметр, поэтому вы будете получать ошибки для первого запроса каждый раз, потому что она не может видеть заполнитель дляпривязать значение к
Надеюсь, это немного поможет вашему пониманию, по сути, вам не нужно указывать заполнители, это то, что процесс связывания для