我想用php和mysqli以及准备好的语句来总结Mysql中的一行。当我使用准备好的语句并绑定参数时,它会返回错误的结果(大约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注入。
谢谢你的帮助。除雾
您可以尝试使用此代码吗?让您的查询保持原样,在查询下面使用此代码
$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);
}