美好的一天。
我在数据库中为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->error;
//$result->error;
$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
行<{1}}
请告诉我如何正确计算echo $res2->affected_rows;
?
答案 0 :(得分:5)
永远不要使用。
所有其他答案告诉您要删除大多数无用的部分。虽然你真正需要删除的是连接部分。这使整个功能无用。
甚至有害,因为每次打算运行查询时都会连接你的MySQL服务器。
更有害,因为它不支持准备好的陈述。
答案 1 :(得分:4)
删除$ mysqli-&gt; close();并利用
$mysqli->query("INSERT INTO Table (name, value) VALUES ('$name', '$value')");
echo $mysqli->affected_rows;
答案 2 :(得分:2)
变化
$res2 = mysqli("INSERT INTO Table (name, value) VALUES ('$name', '$value')");
到
$res2 = mysqli_query("INSERT INTO Table (name, value) VALUES ('$name', '$value')");
答案 3 :(得分:-3)
删除该行:
$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() expects parameter 1 to be mysqli, object given