PHP mySQL numRows()的用法和错误



我有以下代码,用于检查数据库(类(上的约束。你正在尝试获取查询返回的行数,但我在行上一直收到同样的错误

$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的信息,所以这是我所能做的。祝你好运

相关内容

  • 没有找到相关文章

最新更新