这一切都在没有

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%"

enter image description here

请不要在意"基准"这个词.在我的问题中,我用"Date"来代替,以便更好地理解.

如上所述, Select 查询与LIKE-DATE-PART配合使用很好:

$ergebnis_monatssaldo = $mysqli-\>query("SELECT summe FROM stunden WHERE md5 = '$cashoutID' AND date LIKE '$date' AND cash_out = '0';");

date/datum-column has type

users have month-filter-buttons

感谢你们的帮助.以下解决方案为我做了这项工作.这当然不是最顺畅的方式,但效果很好:

    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();

推荐答案

使用日期范围

AND date >= ? 
AND date < ?

其中两个参数是日期2024-03-012024-04-01.将这些参数作为适当的日期值传递,而不是字符串.

Sql相关问答推荐

Oracle中的分层查询

如何使用WSO2将空值传递给我的SQL Server存储过程?

我希望以正确的升序获取SQL结果.怎样才能得到它们?

如何在Presto中将多个列合并到一个数组中

导出部分条形码字符串GS1-128

使用generate_series()时,LEFT联接缺少日期/间隔

SQL递归.硬币兑换问题.-try 使用递归解决硬币找零问题

如果另一个表中不存在值列,则插入失败

Postgres SQL查询从字符串中获取邮箱地址

需要使用SQLite查询进行一些奇怪的时间转换

不存在记录的国外关键点

使用 union 的有序结果获取行数

PostgreSQL:从多个字段收集特定指标的最后一个条目

如何在 postgres 中旋转某些数据字段

达到特定值时,从0开始累加求和

如何从一张表中获取值在至少三行相同的记录

更新之前如何获得价值

使用SQL中另一个表的查询结果在表中查找记录

如何仅在满足条件时才按顺序在 SQL 中计数?

条件前置值