>我为数据库中的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,给定对象