Я пишу подготовленный оператор PHP, используя подготовленные операторы MySQLi, где первый связанный параметр является идентификатором пользователя, а второй параметр может быть одним из 5 различных фрагментов кода SQL (на основе переменной $ redeemLimitCheckRange ) на других условиях представлены в виде строки. У меня проблемы с привязкой второго параметра.
Я пытался связать код SQL как строку, пытался использовать функцию SQL CONCAT (), но ни одна из них не работает.
<?php
if($dbRedeemStart != '' && $dbRedeemEnd != ''){
$redeemLimitCheckRange = "AND DATE(chg_date) >='$dbRedeemStart' AND DATE(chg_date) <= '$dbRedeemEnd'";
else if($dbRedeemStart != '' && $dbRedeemEnd == ''){
$redeemLimitCheckRange = "AND DATE(chg_date) >= '$dbRedeemStart'";
else if($dbRedeemStart == '' && $dbRedeemEnd != ''){
$redeemLimitCheckRange = "AND DATE(chg_date) <= '$dbRedeemEnd'";
}else{
$redeemLimitCheckRange = "";
}
$sql = "SELECT COUNT(recId) totalRedeem FROM transactions WHERE userId = ? AND `type` = 'Redeemed' ?";
$stmt = mysqli_stmt_init($connection);
if(!mysqli_stmt_prepare($stmt, $sql)){
error_log("mysqli_stmt_prepare failure", 0);
}else{
mysqli_stmt_bind_param($stmt, "is", $usrId, $redeemLimitCheckRange);
mysqli_stmt_execute($stmt);
$rslt = mysqli_stmt_get_result($stmt);
mysqli_stmt_close($stmt);
}
?>
В настоящее время php не работает в строке mysqli_stmt_prepare ($ stmt, $ sql) и выдает ошибку.