mysqli_affected_rows创建新连接(阅读详细信息)

时间:2015-12-05 14:45:27

标签: php mysqli

我正在学习使用mysqli而不是mysql并面临一些问题。 这是我的代码。

require("classes/dbo.class.php");

$db->dml('update table set name="abc" where a_id=5);
echo "Rows Affected : ".mysqli_affected_rows($db->link());

这是dbo.class.php     

class dbo
{
    private $db = "dbname";
    private $user = "root";
    private $pass = "";
    private $host = "localhost";

    function link()
    {
        $link = mysqli_connect($this->host, $this->user, $this->pass) or die(mysqli_error($link));
        return $link;
    }

    function dml($q)
    {
        $link = mysqli_connect($this->host, $this->user, $this->pass) or die(mysqli_error($link));
        mysqli_select_db($link,$this->db) or die(mysqli_error($link));
        mysqli_query($link, $q) or die(mysqli_error($link));

    }

}

$db = new dbo();

现在问题是我不明白如何在mysqli_affected_rows()函数中传递数据库链接($ link)。我试过上面,但似乎创建了一个新的数据库连接,所以mysqli_affected_rows返回0而不是1。

我想在dbo.class.php中创建一个新方法dmlWithMysqliAffectedRow(),它返回受影响的行而不是true和false。

我的解决方案对我来说很愚蠢。哪种方法更好?

1 个答案:

答案 0 :(得分:2)

首先,您在此代码中遇到错误,但尚未关闭查询字符串。最好在SQL数据参数周围使用双引号字符串和单引号。

require("classes/dbo.class.php");

//$db->dml('update table set name="abc" where a_id=5);
$db->dml("update table set name='abc' where a_id=5");
echo "Rows Affected : ".mysqli_affected_rows($db->link());

第二个mysqli_有一个非常好的OO实现,使用它而不是试图重新发明轮子,并获得正方形。

文档:for this can be found here, in many languages