当我试图在SQL (PHP/PDO)中运行这个函数的提取部分时,我得到以下错误:
向数据库提交查询错误:SQLSTATE[HY093]: Invalid parameter number::membernobooking2
函数传递这些变量:
function makeBooking($memberNo2,$car,$bayID,$bookingDate,$bookingHour,$duration) {}
具体代码部分为:
$stmt4 = $db->prepare("INSERT INTO booking (bookingid, bayid, bookingdate, bookinghour, duration, memberno, car)
VAlUES (DEFAULT, :bayIDBooking, :bookingDateBooking, :bookingHourBooking, :durationBooking,
(SELECT memberNo FROM PeerPark.Member m WHERE (m.email = ':membernobooking') OR (m.nickname = ':membernobooking')), :carBooking)
RETURNING bookingid ");
$stmt4->bindValue(':bayIDBooking',$bayID,PDO::PARAM_INT);
$stmt4->bindValue(':bookingDateBooking',$bookingDate,PDO::PARAM_STR);
$stmt4->bindValue(':bookingHourBooking',$bookingHour,PDO::PARAM_INT);
$stmt4->bindValue(':durationBooking',$duration,PDO::PARAM_INT);
$stmt4->bindValue(':membernobooking',$memberNo2,PDO::PARAM_STR):
$stmt4->bindValue(':carBooking',$car,PDO::PARAM_STR);
$stmt4->execute();
我看到有一个非常相似的问题,但我不相信我得到任何重复。有人能告诉我吗?
在您的值中删除绑定周围的引号'
(m.email = ':membernobooking') OR (m.nickname = ':membernobooking')
^ ^ ^ ^
(m.email = :membernobooking) OR (m.nickname = :membernobooking)
占位符不能包含引号
参考(s):
- http://php.net/pdo.prepared-statements