У меня есть функция в классе PHP, где я пытаюсь создать и запустить хранимую процедуру, но я не могу заставить переменные перейти к хранимой процедуре. Если я вручную ввести dateStart
, dateEnd
и user_id
то вещи работают, как и ожидалось, но не тогда, когда я пытаюсь связать переменные с ним (я даже попытался с помощью PHP прямо переменных без толку):MySQL хранимой процедуры и PDO?
try {
$sql = $conn->prepare("
DROP PROCEDURE IF EXISTS datespopulate;
DELIMITER |
CREATE PROCEDURE datespopulate(dateStart DATE, dateEnd DATE, user_id)
BEGIN
WHILE dateStart <= dateEnd DO
INSERT INTO timesheet (DATE_YYYYMMDD, USER_ID) VALUES (dateStart, user_id);
SET dateStart = date_add(dateStart, INTERVAL 1 DAY);
END WHILE;
END;
|
DELIMITER ;
CALL datespopulate(:startdate,:enddate,:user_id);
");
$sql->execute(array(
':startdate'=> $startdate,
':enddate'=> $enddate,
':user_id'=> $userid));
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage(); }
Я попробовал bindparam
, но это тоже не сработало (возможно, я делал это неправильно?). Что я здесь делаю неправильно?
Действительно, кто-то проголосовал за этот ответ? Было бы интересно объяснить, почему это заслуживает голосования. –