2

我在数据库中创建查询函数:

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

4

4 回答 4

6

此功能毫无意义且有害。

并且永远不应该使用。

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

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

甚至更有害,因为它不支持准备好的语句

于 2013-10-25T13:04:08.370 回答
3

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

$mysqli->query("INSERT INTO Table (name, value) VALUES ('$name', '$value')"); 
echo $mysqli->affected_rows;
于 2013-10-25T12:46:04.683 回答
1

改变

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

$res2 = mysqli_query("INSERT INTO Table (name, value) VALUES ('$name', '$value')");
于 2013-10-25T12:40:02.830 回答
-5

删除行:

$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;
}

像这样使用:

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

你的结果将在这个变量中:res2[0];

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

于 2013-10-25T12:39:57.643 回答