Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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 mysqli_受影响的_行创建新连接(阅读详细信息)_Php_Mysqli - Fatal编程技术网

Php mysqli_受影响的_行创建新连接(阅读详细信息)

Php mysqli_受影响的_行创建新连接(阅读详细信息),php,mysqli,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";

我正在学习使用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_impacted_rows()函数中传递数据库链接($link)。我在上面尝试过,但它似乎创建了一个新的数据库连接,所以mysqli_受影响的_行返回0而不是1

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

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();

我觉得我的解决方案很愚蠢。哪种方法更好?

首先,如果此代码中有错误,您尚未关闭查询字符串。在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实现,使用它,而不是试图重新发明轮子,得到一个方形的轮子


文档:

谢谢。我按照您的建议使用了OO实现。