我正在疯狂地查找以下PDO SELECT语句中的错误:
$get_allocation_id = "
SELECT id
FROM form1_group_info
WHERE
group_name=:group_name,
group_leaders=:group_leaders,
soas_short_cd=:soas_short_cd,
phone_number=:phone_number,
email=:email
LIMIT 1";
$alloc_id_stmt = $dbh->prepare($get_allocation_id);
$alloc_id_stmt->bindParam(":group_name", $params['group_name']);
$alloc_id_stmt->bindParam(":date_submitted", $params['date_submitted']);
$alloc_id_stmt->bindParam(":group_leaders", $params['group_leaders']);
$alloc_id_stmt->bindParam(":soas_short_cd", $params['soas_short_cd']);
$alloc_id_stmt->bindParam(":phone_number", $params['phone_number']);
$alloc_id_stmt->bindParam(":email", $params['email']);
$alloc_id_stmt->execute();
上面的代码在一个PHP文件中,该文件由提供$params的ajax请求调用。
任何建议都将不胜感激。
您的SQL语法无效;WHERE
子句条件必须用逻辑AND
(或OR
,但我们假设您在这种情况下打算起诉AND
)分隔,但您用逗号分隔:
SELECT id
FROM form1_group_info
WHERE
group_name=:group_name
/* Insert logical AND */
AND group_leaders=:group_leaders
AND soas_short_cd=:soas_short_cd
AND phone_number=:phone_number
AND email=:email
LIMIT 1;
如上所述,您还绑定了一个查询中未使用的参数。也许你的意思是:
SELECT id
FROM form1_group_info
WHERE
group_name=:group_name
AND group_leaders=:group_leaders
AND soas_short_cd=:soas_short_cd
AND phone_number=:phone_number
AND email=:email
/* forgot this one... */
AND date_submitted=:date_submitted
LIMIT 1;
如果包含错误,会有所帮助。也就是说,我认为问题是:
$alloc_id_stmt->bindParam(":date_submitted", $params['date_submitted']);
您没有在查询中使用该参数。