我相信这很明显,但是我不能发现下面的代码有什么问题:
$sSQl="SELECT nDocumentID, sFilename, sDescription
FROM tCompanyDocuments
WHERE nCompanyID=:nCompanyID AND sDocumentType='I' ORDER BY nDisplayOrder";
$objQuery=$objConn->prepare($sSQL);
$objQuery->bindParam(':nCompanyID', $arrResult['nCompanyID']);
if ($objQuery->execute()) {
$arrTemp=$objQuery->fetchAll(PDO::FETCH_ASSOC);
if (sizeof($arrTemp)>0) {
foreach ($arrTemp as $objRow) {
//do stuff
}
}
}
错误信息是"致命错误:未捕获的异常'PDOException'与消息'SQLSTATE[HY093]:无效参数数:绑定变量的数量不匹配令牌'在{filename}",引用的行是$objQuery->execute()
我已经确认$arrResult['nCompanyID']
已被填充-我看不到什么?
谢谢
如何验证$arrResult['nCompanyID'] ?查询似乎运行良好,并返回结果。我猜是$arrResult['nCompanyID']是空的
试试这个:
$sSQl="SELECT nDocumentID, sFilename, sDescription
FROM tCompanyDocuments
WHERE nCompanyID = :nCompanyID AND sDocumentType='I' ORDER BY nDisplayOrder";
如果nCompanyID是整数类型,则:
$objQuery->bindParam(':nCompanyID', $arrResult['nCompanyID'], PDO::PARAM_INT);
或
$objQuery->bindParam(':nCompanyID', $arrResult['nCompanyID'], PDO::PARAM_STR,Length of string);
看到细节