PHP检查SQL中是否存在记录
我试图检查SQL中是否存在记录,并获得返回->True或False。 它返回一个通知: 注意:正在尝试获取…中非对象的属性。。。。如果($result->num_rows>0)PHP检查SQL中是否存在记录,php,mysql,sql,Php,Mysql,Sql,我试图检查SQL中是否存在记录,并获得返回->True或False。 它返回一个通知: 注意:正在尝试获取…中非对象的属性。。。。如果($result->num_rows>0) 如果查询未在$result变量中注入对象,则会发生这种情况。您可以进行以下更改以继续 if(is_object($result) && $result->num_rows > 0) { echo 'found'; // The record(s) do exist } else{
如果查询未在
$result
变量中注入对象,则会发生这种情况。您可以进行以下更改以继续
if(is_object($result) && $result->num_rows > 0) {
echo 'found'; // The record(s) do exist
} else{
echo 'not found'; // No record found
}
或
if(!empty($result->num_rows)) {
echo 'found'; // The record(s) do exist
} else{
echo 'not found'; // No record found
}
也要保持简单:
$query = "SELECT * FROM `order` WHERE telephone = '$telephone' AND order_status_id='0' ";
订单
是一个很好的选择。将其用作字段名、表名或除“按字段名排序”以外的任何名称需要使用反勾号:
SELECT * FROM `order` WHERE ....
否则,您将得到一个查询错误,该错误将$result
转换为布尔值false
此外,您的代码容易受到攻击。
我建议您在检查查询对象的行时使用准备好的语句。查询对象不包含行
Use like this
$sqlReq = " SELECT * FROM order WHERE telephone = '".$telephone."' AND order_status_id='0' ";
$queryReq = mysql_query($sqlReq) or die(mysql_error());
if(mysql_num_rows($queryReq) > 0)
{
echo "found";
}else{
echo "not found";
}
你想做的是
$data = $result->fetch_array();
if ($data->num_rows > 0)
{
//Rows exist
} else {
//No rows exist
}
首先检查
$result
值。使用print\r($result)
检查值。ORDER
是mysql保留字。您的查询失败,因为在mysql中ORDER
是reserved关键字
除了使用保留字外,它必须在backtick中,为什么要在脚本末尾关闭连接?作为补充的小提示,如果您仍然想使用“order”作为表名,但不想每次都“转义”它,您可以遵循名称约定和用户复数:“orders”您的查询失败,因为order是保留关键字,必须在backtick中!你太棒了!没有错误,但只返回ELSE的结果。为什么?你确定你的$result
得到了预期的结果吗?我不这样认为,请分享您的$result
内容?
$data = $result->fetch_array();
if ($data->num_rows > 0)
{
//Rows exist
} else {
//No rows exist
}