Affected_rows返回负-1但插入

时间:2014-08-28 17:19:48

标签: php mysql mysqli insert

我有以下PHP代码,当我执行它时,affected_rows返回-1,但是当我在HeidiSQL中运行select时,数据在表中。为什么会这样?

$id = filter_input(INPUT_POST, 'id', FILTER_VALIDATE_INT);
$estatus = filter_input(INPUT_POST, 'estatus');
$larga = filter_input(INPUT_POST, 'larga');
$corta = filter_input(INPUT_POST, 'corta');
$fecha = filter_input(INPUT_POST, 'fecha');
$usuario = $_SESSION['id'];
$query = 'INSERT INTO tarea(oportunidad_id, estatus, usuarioId, tareaTarea, fechaLimite, tareaCorta)'
       . 'VALUES(' . $id . ', "' . utf8_decode($estatus) . '", ' . $usuario . ', "' . $larga . '", "' . $fecha .
     '", "' . $corta . '")';
$con->query($query) or exit("Error: " . $con->errno . ": " . $con->error);
if ($con->affected_rows > 0) {
    echo 'Tarea agregada';
} else {
    exit($con->mensaje_error());
}

1 个答案:

答案 0 :(得分:0)

if ($result = $con->query($query)){
    if($result->num_rows > 0){
        echo 'Tarea agregada';
    }
} else {
    exit($con->mensaje_error());
}

尝试使用num_rows而不是受影响的行。并且您可以在此if语句中执行$ result = $ con>查询,它与$con->query($query) or exit(...

完成相同的操作

您无法询问受影响行的连接,您必须将结果保存为变量并对该结果执行->affected_rows

查询未失败,检查查询失败的方式