我正在学习使用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。
我的解决方案对我来说很愚蠢。哪种方法更好?
答案 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实现,使用它而不是试图重新发明轮子,并获得正方形。