【发布时间】:2013-09-10 14:05:47
【问题描述】:
我在 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,但这似乎也不起作用(也许我做错了?)。我在这里做错了什么?
【问题讨论】:
标签: php mysql stored-procedures pdo