Php mysqli_受影响的_行创建新连接(阅读详细信息)
我正在学习使用mysqli而不是mysql,并且面临一些问题。 这是我的密码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";
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实现。