Я хочу подвести итог строки в Mysql, используя php с mysqli и подготовленные заявления. Когда я использую подготовленное утверждение и связываю параметр, он возвращает неправильный результат (около 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);
}
Других решений пока нет …