Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter查询Num行_Php_Codeigniter - Fatal编程技术网

Php Codeigniter查询Num行

Php Codeigniter查询Num行,php,codeigniter,Php,Codeigniter,我在CI应用程序中有以下代码: $query = "INSERT INTO user(user_name,user_email) VALUES(?,?)"; $result = $this->db->query($query,array($userName,$email)); if ($result->num_rows()>0) return $this->db->insert_id();

我在CI应用程序中有以下代码:

$query = "INSERT INTO user(user_name,user_email) VALUES(?,?)";
        $result = $this->db->query($query,array($userName,$email));
        if ($result->num_rows()>0)
            return $this->db->insert_id();
        else
            return null;
这会产生一个错误;致命错误:在第38行的C:\xampp\htdocs\cmdline\application\models\mlogin.php中的非对象上调用成员函数num_rows()

第38行是行数大于0的条件。
现在我不知道发生了什么-我正在使用CI的文档检查行数是否大于0,为什么会失败?

这是因为您正在执行
插入
查询。修改数据的查询在所有情况下都返回
TRUE
,因此您真正尝试的是
TRUE->num_rows()
,这没有任何意义,会导致错误

您实际需要检查的是
$this->db->impacted_rows()
,它将告诉您有多少行被插入到数据库中


尽管在本例中没有这样做,但值得注意的是,
受影响的_rows()
只会返回在查询过程中实际更改的行数,因此
更新不实际修改数据的查询(即,如果字段已经具有查询试图设置的值),然后该行将不会反映在CodeIgniter文档中受影响的行()值中。

当运行“读取”类型的查询时,query()函数返回一个数据库结果对象,您可以使用它来显示结果。当运行“write”类型的查询时,它只会根据成功或失败返回TRUE或FALSE。检索数据时,通常会将查询分配给您自己的变量,如下所示:


您的查询,因为它是一个INSERT,只会返回TRUE或FALSE。

数据库库是否已加载?@IANBridley如果库未加载,错误肯定会出现在if语句之前。因此,您要查看的是if($result){return$this->db->INSERT_id()}是。。。这里确实发生了这样的事情:)