我有以下代码,用于检查数据库(类(上的约束。你正在尝试获取查询返回的行数,但我在行上一直收到同样的错误
$count1= $ires1->numRows(MDB2_FETCHMODE_ASSOC);
错误:
> Call to a member function numRows() on a non-object
我一直在拔头发,因为我的其他功能与这个功能类似,效果很好,这是唯一不起作用的功能。这个有什么特别之处吗?
参数$db只是到我的数据库的连接,pno
是整数,essn
是文本。。所以我不确定我做错了什么。。
<?php
function submitCheck($db){
$essn= $_POST['essn'];
$pno=$_POST['pno'];
$query1 = "select * from works_on where pno=? and essn=?";
$types1 = array('integer','text');
$stmt1 = $db->prepare($query1, $types1, MDB2_PREPARE_MANIP);
if (MDB2::isError($stmt1)) {
print("bad prepared statement:" . $stmt->getMessage());
}
$queryargs1 = array($pno, $essn);
$ires1 = $stmt1->execute($queryargs1);
$count1= $ires1->numRows(MDB2_FETCHMODE_ASSOC);
//print("The project number entered was $count1[pno]");
if(!(count($count1)==0)){
print("The employee is already part of this project! If you want to update the hours, please select update!");
return false;
}
return true;
}
?>
$count1 = $stmt1->rowCount();
$ires1
不是Object
,而是boolean
,如PHP PDOStatement::rowcount文档中所述。
不过,来自PHP.net网站的警告:
如果执行的最后一条SQL语句相关的CCD_ 6是
SELECT
语句,某些数据库可能返回返回的行数该声明。然而不能保证所有人的行为数据库,不应依赖用于便携式应用。
你也有他们建议的解决方案:
对于大多数数据库,
PDOStatement::rowCount()
不返回受影响的行数CCD_ 9语句。相反,使用PDO::query()
发布具有相同内容的SELECT COUNT(*)
语句谓词作为您想要的SELECT语句,然后使用PDOStatement::fetchColumn()
至检索将被退回。然后您的应用程序可以执行正确的操作。">
我不知道,也找不到关于方法numRows
的信息,所以这是我所能做的。祝你好运