日期函数的MySQL语法错误

时间:2018-03-19 17:26:27

标签: php mysql

我正在编写一个查询,该查询从用户获取一对日期并搜索它是否与我的数据库表中的任何开始和结束列日期重叠。

$from = $_GET['from'];
$to = $_GET['to'];
$sql="select bikeid from bikebookings where date('Y-m-d',strtotime(str_replace('/', '-', $from))) <= end and date('Y-m-d',strtotime(str_replace('/', '-', $to))) >= start";
mysqli_query($link,$sql) or die(mysqli_error($link));

我收到如下错误:

  

您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以便在'strtotime(str_replace('/',' - ',20/03/2018)附近使用正确的语法)&lt; = end和date('Ym-d' ,strtotime('第1行

1 个答案:

答案 0 :(得分:0)

你应该使用mysql str_to_date函数并避免sql注入。你应该使用绑定参数。例如:

$stmt = $mysqli->prepare("select bikeid from bikebookings 
     where str_to_date( ?, '%Y-%m-%d') <= end and  str_to_date( ?, '%Y-%m-%d') >= start");
$stmt->bind_param('ss',$from, $to);
$stmt->execute();