这一切都在没有
AND date LIKE ?
但使用它时,它不会更新表.我做错了什么?$DATE如下所示:
2024-03%
并由$TableYear和$TableMonth创建.
有没有人看到下面这一部分的失败?我正在使用AJAX请求调用脚本,所以我没有错误消息.
$tableYear = $tableYEAR . "-" . $tableMonth;
$date = $tableYear . "%";
/*Prepare DB-Update*/
$stmt_cashoutflag_update = $mysqli->prepare("UPDATE stunden SET cash_out=? WHERE md5=? AND date LIKE ?");
/*Bind params*/
$stmt_cashoutflag_update->bind_param('iss', $flag, $idMD5, $date);
/* Execute the prepared Statement */
$stmt_cashoutflag_update->execute();
/*Close the prepare Statement*/
$stmt_cashoutflag_update->close();
我试了试没有类似部分的代码,它起作用了.否则,它不会更新表. 当我在 Select 查询中使用$DATE时:
$ergebnis_monatssaldo = $mysqli-\>query("SELECT summe FROM stunden WHERE md5 = '$cashoutID' AND date LIKE '$date' AND cash_out = '0';");
它也在发挥作用.
我不确定是不是"喜欢?"是对的.
VAR_DUMP($TableMonth)正在提供:字符串(2)"03"
VAR_DUMP($DATE)给出:字符串(8)"2024-03%"
请不要在意"基准"这个词.在我的问题中,我用"Date"来代替,以便更好地理解.
如上所述, Select 查询与LIKE-DATE-PART配合使用很好:
$ergebnis_monatssaldo = $mysqli-\>query("SELECT summe FROM stunden WHERE md5 = '$cashoutID' AND date LIKE '$date' AND cash_out = '0';");
感谢你们的帮助.以下解决方案为我做了这项工作.这当然不是最顺畅的方式,但效果很好:
if(isset($_POST['tableMonth'])){
$tableYear = $tableYEAR . "-" . $tableMonth;
$dateSTART = $tableYear . "-01";
if($tableMonth == "01") {
$monthEND = "-02";
} else if($tableMonth == "02"){
$monthEND = "-03";
} else if($tableMonth == "03"){
$monthEND = "-04";
} else if($tableMonth == "04"){
$monthEND = "-05";
} else if($tableMonth == "05"){
$monthEND = "-06";
} else if($tableMonth == "06"){
$monthEND = "-07";
} else if($tableMonth == "07"){
$monthEND = "-08";
} else if($tableMonth == "08"){
$monthEND = "-09";
} else if($tableMonth == "09"){
$monthEND = "-10";
} else if($tableMonth == "10"){
$monthEND = "-11";
} else if($tableMonth == "11"){
$monthEND = "-12";
}
$dateEND = $tableYEAR . $monthEND . "-01";
if($tableMonth == "12"){
$tableYEARNEXTYEAR = $tableYEAR + 1;
$dateENDNEXTYEAR = $tableYEARNEXTYEAR . "-01-01";
}
}
/*Prepare DB-Update*/
$stmt_cashoutflag_update = $mysqli->prepare("UPDATE stunden SET cash_out=? WHERE md5=? AND datum>=? AND datum<?");
/*Bind params*/
$stmt_cashoutflag_update->bind_param('isss', $cashout_flag, $arbeiterCashoutBTNMonth, $dateSTART, $dateEND);
/* Execute the prepared Statement */
$stmt_cashoutflag_update->execute();
/*Close the prepare Statement*/
$stmt_cashoutflag_update->close();