這很奇怪。我有以下php代碼,當我執行它時,affected_rows返回-1,但是當我在HeidiSQL中運行select時,數據在表中。爲什麼會發生?Affected_rows返回負值-1,但插入
$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,如果最近一次查詢失敗。 ' – 2014-08-28 17:29:03
Emmm我知道,但似乎查詢確實不會失敗,因爲數據被插入到表中。 – iglesiasedd 2014-08-28 17:30:26
使用'mysqli'時,您應該使用參數化查詢和['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)將用戶數據添加到您的查詢中。 **不要**使用字符串連接來實現此目的,因爲您將創建嚴重的[SQL注入漏洞](http://bobby-tables.com/)。我嚴重懷疑'filter_input'是否足夠。 – tadman 2014-08-28 18:01:33