php和mysqli上受影响的行

时间:2013-10-25 12:37:04

标签: php 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->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;

4 个答案:

答案 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