我想在mysql中使用php与mysqli和prepared语句总结一行。当我使用预准备语句并绑定param时,它返回错误的结果(大约200 ......):
$stmt = $mysqli->prepare("SELECT SUM($user) FROM $datenbankid WHERE namepayer=?");
$value = "clemens";
if(!$stmt->bind_param("s", $value)){
$response["errormessage"] = $stmt->error;
}
$stmt->execute();
$stmt->bind_result($sum);
$stmt->fetch();
$response["debtsan" . $value] = $sum;
$stmt->close();
但是当我在没有bind_param的情况下使用它时,它会返回正确的数量:
$stmt = $mysqli->prepare("SELECT SUM($user) FROM $datenbankid WHERE namepayer = Clemens");
$stmt->execute();
$stmt->bind_result($sum);
$stmt->fetch();
$response["debtsantest" . $value] = $sum;
$stmt->close();
我没有错误,没有绑定参数它正在工作。但是我想使用bind_param来避免sql注入。
感谢您的帮助。 德棉
答案 0 :(得分:0)
您可以尝试使用此代码,将查询保留为使用查询
下方的代码$value = "clemens";
if($stmt === false) {
$response["errormessage"] =$mysqli->error;
}
$stmt->bind_param("s", $value);
$stmt->execute();
$stmt->bind_result($sum);
while ($stmt->fetch()) {
printf("%i\n", $sum);
}