mysqli准备了陈述日期和条款之间

时间:2013-04-04 00:24:34

标签: mysql sql prepared-statement

$stmt = $mysqli->prepare("SELECT vin FROM jobs WHERE out between ? and ?");
        $stmt->bind_param('ss', $startday, $endday);


        $startday = '2013-01-01';
        $endday = '2013-12-31';

        $stmt->execute();
        $stmt->store_result();

        $stmt->bind_result($vin);
echo $vin;

如果我删除了部分声明,上面的代码会发出查询错误。我试图将列名括在括号中,但是也会杀死查询,所以我不得不删除它们。似乎问题是与条款之间我可能不知道如何使用它。请帮忙

Fatal error: Call to a member function bind_param() on a non-object

1 个答案:

答案 0 :(得分:3)

问题不在BETWEEN子句上,而是使用保留关键字OUT作为列名。有两种方法可以保持这项工作,

一个是用反引号包裹它,

$stmt = $mysqli->prepare("SELECT vin FROM jobs WHERE `out` between ? and ?");

另一种方法是在表格上提供ALIAS,并将其与列名一起使用。

$stmt = $mysqli->prepare("SELECT vin FROM jobs a WHERE a.out between ? and ?");