【问题标题】:mssql_num_rows error, but query worksmssql_num_rows 错误,但查询有效
【发布时间】:2013-07-22 16:02:27
【问题描述】:

您好,我正在从 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 都发出同样的错误信息)

【问题讨论】:

  • mssql_query 如果查询失败则返回布尔值;尝试运行 mssql_get_last_message() 以查看来自数据库的错误消息是什么。
  • 那是奇怪的部分 - 记录被插入,所有数据都按照我想要的方式......我刚刚尝试了 mssql_get_last_message() 并且消息是空的
  • 这很奇怪;您是否尝试过运行mssql_get_last_message() 以查看其中是否有任何内容?
  • so - 我刚刚尝试了 mssql_get_last_message() 并且消息为空。并添加了记录。
  • 哦,这正在敲响警钟。你能运行var_dump($itemresult) 看看它返回什么吗?

标签: php sql-server-2005


【解决方案1】:

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

$itemresult = mssql_query($writeitem);

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多