【发布时间】:2012-06-11 12:00:22
【问题描述】:
我无法进行以下工作。我想在下面的示例中使用准备好的语句,但出现错误。函数明确地在 $array 中传递了正确的值:
private function getInfoFromSystem($array) {
try {
$sql = "
SELECT
PCO_AGENT.NAME,
PCO_INBOUNDLOG.LOGIN AS LOGINID,
PCO_INBOUNDLOG.PHONE AS CALLERID,
PCO_INBOUNDLOG.STATION AS EXTEN,
PCO_INBOUNDLOG.TALKTIME AS CALLLENGTH,
PCO_INBOUNDLOG.CHANNELRECORDID AS RECORDINGID,
PCO_SOFTPHONECALLLOG.RDATE,
PCO_INBOUNDLOG.RDATE AS INBOUNDDATE
FROM
PCO_INBOUNDLOG
INNER JOIN
PCO_LOGINAGENT ON PCO_INBOUNDLOG.LOGIN = PCO_LOGINAGENT.LOGIN
INNER JOIN
PCO_SOFTPHONECALLLOG ON PCO_INBOUNDLOG.ID = PCO_SOFTPHONECALLLOG.CONTACTID
INNER JOIN
PCO_AGENT ON PCO_LOGINAGENT.AGENTID = PCO_AGENT.ID
WHERE
LOGINID = :extension
";
$arr = array(":extension" => $array['extension']);
$query = $this->mssql->prepare($sql);
$query->execute($arr);
// $sql = "select * from sys.messages where message_id = 229";
foreach($this->mssql->query($sql) as $row) {
echo "<pre>";
print_r($row);
echo "</pre>";
}
}
catch(PDOException $e) {
echo $e->getMessage();
}
}
【问题讨论】:
-
也可能是
var_dump($array['extension'])? :) -
SQLSTATE[HY000]:一般错误:207 一般 SQL Server 错误:检查来自 SQL Server [207](严重性 16)的消息 [(null)
-
你的错误是什么?你期望得到什么?更重要的是为什么在调用 PDOStatement::execute() 之后使用 PDO::query() 而不是 PDOStatement::fetch*()?
-
也许只是某处拼写错误:msdn.microsoft.com/en-us/library/aa258715(v=sql.80).aspx:“当在查询的 FROM 子句中指定的任何表中找不到 Transact-SQL 语句中引用的列时,就会发生此错误。”
标签: php pdo prepared-statement