【发布时间】:2016-01-27 12:57:23
【问题描述】:
我尝试使用 php 和 mysql 调用存储过程并收到上述错误消息?有人对我做错了什么有任何想法吗?
try{
$conn = new PDO('mysql:host=localhost;dbname=holidaybookingapp', '', '');
}
catch (PDOException $exception)
{
echo "Oh no, there was a problem" . $exception->getMessage();
}
$startDate="2017-05-23";
$endDate="2017-05-23";
$empID= "2";
$sql='CALL spAddNewHoliday(:EmployeeID,:StartDate,:EndDate)';
$stmt = $conn->prepare($sql);
$stmt = $conn->prepare("CALL spAddNewHoloiday(?,?,?)");
$stmt->bindParam('employeeID',$empID, PDO::PARAM_STR);
$stmt->bindParam('StartDate1',$startDate, PDO::PARAM_STR);
$stmt->bindParam('EndDate1',$endDate, PDO::PARAM_STR);
//$array=array($empID, $startDate,$endDate);
$stmt->execute(); // call the stored procedure
【问题讨论】:
-
无效参数号好像很清楚...为什么要准备两次stmt?而且,顺便说一句,你为什么不保留你的第一个 stmt 并在执行中使用一个数组而不是三次 bindParam 呢? + 注意你的“spAddNewHoliday”看起来不对……(holoday)
-
您致电
prepare两次。如果你像第一次一样打电话给prepare,你必须打电话给bindParam(':StartDate'....)(:,最后没有1);如果你像第二种方式那样调用它,你必须调用bindParam(1, $empID,...); bindParam(2, $startDate...) etc
标签: php mysql stored-procedures