1

嗨,我正在从 php 应用程序写入远程 MSSQL 2005 服务器,并且出现 mssql_num_rows 错误并显示“mssql_num_rows() 期望参数 1 是资源,给定布尔值”消息....但我想不通为什么

$writeitem = "INSERT INTO RebateSubmissionProducts VALUES ('" . $buyproduct . "'," . $quantity . ",CAST('" . $itemUUID . "' as UNIQUEIDENTIFIER),CAST('" . $eligible . "' as UNIQUEIDENTIFIER),CAST('" . $prodID . "' as UNIQUEIDENTIFIER),CAST('" . $UUID . "' as UNIQUEIDENTIFIER),NULL)";

$itemresult = mssql_query($writeitem);
if (!mssql_num_rows($itemresult)){
    echo 'Problem writing to RebateSubmissionProducts';
} else {
    echo 'Success writing to RebateSubmissionProducts';
}
mssql_free_result($itemresult);

结果是我收到错误消息,但插入工作正常。

顺便说一句,所有的输入都是通过 HTMLPurifier 运行的,所以不要因此而责怪我。托管公司无法设置 PDO_DBLIB,因此我无法使用 PDO/绑定参数……我也无权访问 MS 服务器来创建存储过程。

任何想法为什么 php 认为 $itemresult 是布尔值?(mssql_num_rows 和 mssql_free_result 都发出相同的错误消息)

4

1 回答 1

0

正如andrewsi指出的那样, mssql_num_rows() 根据查询以不同的方式响应。就我而言,我正在运行插入,所以当它运行时:

$itemresult = mssql_query($writeitem);

$itemresult 是 boolean(TRUE) 因为插入成功,所以 mssql_num_rows (和 mssql_free_result() 都发出警告,因为没有结果集。

于 2013-07-22T16:43:47.453 回答