【问题标题】:Prepared statement not working when binding it with sql functions将其与 sql 函数绑定时,准备好的语句不起作用
【发布时间】:2021-10-02 07:31:26
【问题描述】:

架构

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

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

【问题讨论】:

    标签: php mysql prepared-statement


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-06-16
      • 2014-09-27
      • 2016-08-30
      • 2014-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多