SQLSTATE[HY093]:无效的参数号- Can't find duplicate


SQLSTATE[HY093]: Invalid parameter number - Can't find the duplicate

当我试图在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