ストアド プロシージャを作成して実行しようとしている PHP クラスに関数がありますが、ストアド プロシージャに渡す変数を取得できないようです。, ,を手動で入力するdateStart
とdateEnd
、user_id
期待どおりに実行されますが、変数をそれにバインドしようとしている場合はそうではありません (まっすぐな PHP 変数を使用しようとしても無駄でした):
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
ましたが、それもうまくいかなかったようです(私のやり方が間違っていたのでしょうか?)。ここで何が間違っていますか?