此警告可能由于许多不同的原因而发生,但是,我认为我这里的问题是表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 是0
是0
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 个"
角色