警告:sqlsrv_num_rows()期望参数1为资源,布尔值为

时间:2016-02-11 15:46:05

标签: php sql-server

此警告可能由于多种原因而发生,但是,我认为我的问题是表APPT为空/并且不包含row t_schedule_id }}。所以,在发布这个问题之前,我会阅读每个可能已经有你的答案的问题,相信我,我做了,我不想要低估...所以,所有答案都说明了同样的事情"你的SQL查询没有成功,返回了一个FALSE布尔值" ..是的,我知道查询返回false,因为有0行t_schedule_id这就是我的观点,我希望我的函数在int0时返回0 t_schedule_id

function.php

function get_appt($schedule_id,$conn){

    $query = "select t_schedule_id as t_schedule_id from [dbo].[APPT] where t_schedule_id = .$schedule_id.; ";

    $stmt = sqlsrv_query($conn,$query);

    $row_count = sqlsrv_num_rows($stmt);

    if ($row_count === false){
       return 0;
    }else{
       return $row_count;
    }
 }

application.php

$get_appt = get_appt(1, $conn);
echo $get_appt;

所以,我的问题是我如何停止获取此warning,无论表格是0如果00,如果是{{1}然后返回那个号码。

谢谢,

PS:我知道我的查询名称中没有错误,例如number > 0而且,当我table name, column name etc ...时,我得到的值为echo $get_appt;,但还有警告

  

警告:sqlsrv_num_rows()期望参数1为资源,第220行中给出布尔值

这是第220行0

3 个答案:

答案 0 :(得分:2)

由于查询字符串中的语法错误,查询无法执行。因此,sqlsrv_num_rows($stmt)会抛出错误。删除$ schedule_id周围的点,以便$ query成为:

$query = "select t_schedule_id as t_schedule_id from [dbo].[APPT] where t_schedule_id = $schedule_id";

使用sqlsrv_errors()检查错误将有助于调试未来的问题。这将返回一个数组,可以使用print_r(sqlsrv_errors(),true);输出 - 请参阅 http://php.net/sqlsrv_errors

答案 1 :(得分:0)

怎么样:

function get_appt($schedule_id,$conn){

    $query = "select t_schedule_id as t_schedule_id from [dbo].[APPT] where t_schedule_id = .$schedule_id.; ";

    $stmt = sqlsrv_query($conn,$query);

    if ($stmt === false){
       return 0;
    }else{
       return sqlsrv_num_rows($stmt);
    }
 }

答案 2 :(得分:0)

我认为语法如下:

$query = "select t_schedule_id as t_schedule_id from [dbo].[APPT] where t_schedule_id =" .$schedule_id."; ";

您错过了2个"字符