如何使用 mysqli 获取受影响的行


How to get affected rows using mysqli?

>我为数据库中的make查询创建函数:

function mysqli($query){
    $mysqli = new mysqli('test','test','test','test');
    if (mysqli_connect_errno()) {
        printf("Bad connect: %s'n", mysqli_connect_error());
        exit();
    }
    $result = $mysqli->query("SET NAMES utf8");
    $result = $mysqli->query("set character_set_client='utf8'");
    $result = $mysqli->query("set collation_connection='utf8_general_ci'");
    $result = $mysqli->query($query);
    $mysqli->close();
    return $result;
};

在下一步中,我希望获取受影响的行计数。

为此,我制作:

$res2 = mysqli("INSERT INTO Table (name, value) VALUES ('$name', '$value')");
echo $res2->affected_rows;

但我Notice: Trying to get property of non-object在线echo $res2->affected_rows;

如何获得affected_rows计数?

这个函数是毫无意义和有害的。

并且永远不应该使用。

所有其他答案都告诉您删除大多数无用的部分。而您真正需要删除的是连接部分。这使得整个功能毫无用处。

甚至是有害的,因为每次运行查询时,您都会通过连接来杀死MySQL服务器。

甚至更有害的是,它不支持准备好的陈述

删除 $mysqli->close();并利用

$mysqli->query("INSERT INTO Table (name, value) VALUES ('$name', '$value')"); 
echo $mysqli->affected_rows;

更改

$res2 = mysqli("INSERT INTO Table (name, value) VALUES ('$name', '$value')");

$res2 = mysqli_query("INSERT INTO Table (name, value) VALUES ('$name', '$value')");

删除该行:

$mysqli->close();

从函数。这将起作用。

function mysqli($query){
$mysqli = new mysqli('test','test','test','test');
if (mysqli_connect_errno()) {
    printf("Bad connect: %s'n", mysqli_connect_error());
    exit();
}
$result = $mysqli->query("SET NAMES utf8");
$result = $mysqli->query("set character_set_client='utf8'");
$result = $mysqli->query("set collation_connection='utf8_general_ci'");
$result = $mysqli->query($query);
$arr = array($result,$mysqli);
return $arr;
}

Amd 像这样使用:

$res2 = mysqli("INSERT INTO Table (name, value) VALUES ('$name', '$value')");
echo $res2[1]->affected_rows;

您的结果将在此变量中:res2[0];

阅读此答案:mysqli_affected_rows() 期望参数 1 是 mysqli,给定对象