准备好的语句在与 sql 函数绑定时不起作用

Prepared statement not working when binding it with sql functions

架构

id Primary  int(11)         No  None        AUTO_INCREMENT  
creation_date_time  datetime    
exp int(11)

    

代码

$now = 'now()';
$interval2 = 'now() + Interval 2 day';
$interval1 = 'now() + Interval 1 day';

if($stmt = $conn->prepare("SELECT * FROM xx WHERE creation_date_time >= ? AND creation_date_time <= ? AND creation_date_time > ?")) {
  $stmt->bind_param("sss", $now, $interval2, $interval1);
  $stmt->execute();
  $result = $stmt->get_result();
  print_r($result);
}

它在没有准备好的语句的情况下工作。 为什么这不起作用,在这种情况下是否需要使用准备好的语句?

它不起作用,因为您试图参数化 SQL 代码,而不仅仅是一个变量值。因此它被视为文本而不是代码。

由于您没有在查询中包含可变输入数据,因此在这种情况下根本不需要使用参数。