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


Warning: sqlsrv_num_rows() expects parameter 1 to be resource, boolean given

此警告可能由于许多不同的原因而发生,但是,我认为我这里的问题是表APPT为空/并且不包含与t_schedule_id的任何row。 我阅读了可能已经有我答案的每个问题,所有答案都陈述了同一件事"您的SQL查询不成功并且返回了FALSE布尔值"。所以是的,我知道查询返回 false,因为t_schedule_id有 0 行,这就是我的观点,我希望我的函数在有0行时返回int 0 t_schedule_id

功能.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;
    }
 }

应用.php

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

所以,我的问题是我怎样才能停止得到这个warning,无论表是否返回0 If 是00 if 是一个number > 0然后返回该数字。

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

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

这是第 220 行$row_count = sqlsrv_num_rows($stmt);

由于查询字符串中的语法错误,查询无法执行。因此,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。

怎么样:

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);
    }
 }
我认为

语法是这样的:

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

你错过了 2 个"角色

相关文章: