【发布时间】:2014-10-22 15:39:18
【问题描述】:
我有以下 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());
}
【问题讨论】:
-
Returns the number of affected rows on success, and -1 if the last query failed. -
Emmm 我知道,但是好像查询真的不会失败,因为数据是插入到表上的。
-
使用
mysqli时,您应该使用参数化查询和bind_param将用户数据添加到您的查询中。 请勿使用字符串连接来完成此操作,因为您将创建严重的SQL injection bugs。我严重怀疑filter_input是否足够。 -
感谢您的推荐 :)