sql查询中的Prestashop变量

sql查询中的Prestashop变量,sql,prestashop,Sql,Prestashop,我需要获取客户列表,其中date\u add>$select\u date 使用此选项,我可以输出所选日期: $this->context->smarty->assign('select_date' , Configuration::get('SELECT_DATE')); So变量:选择日期和值:选择日期(其输入类型为“日期”) 有了这个查询,它就完美地工作了 如果我使用: sql = 'SELECT firstname,lastname FROM ps_customers

我需要获取客户列表,其中date\u add>$select\u date

使用此选项,我可以输出所选日期:

$this->context->smarty->assign('select_date' , Configuration::get('SELECT_DATE'));
So变量:选择日期和值:选择日期(其输入类型为“日期”)

有了这个查询,它就完美地工作了

如果我使用:

sql = 'SELECT firstname,lastname FROM ps_customers WHERE date_add >= $select_date';
我刚刚得到一个错误:PrestaShopDatabaseException-where子句中的未知列“$select_date”

看来我不能在sql查询中使用我的变量,那么如何使其正确工作呢

另外,我认为最好让数组中的所有客户机使用TPL文件中的条件来只打印日期>={$select_date},但是如何编写这样的条件呢

{foreach $custdata as $item}
        <tr >
            <td style="text-align:center;">{$item.firstname}</td>
            <td style="text-align:center;">{$item.lastname} </td>

            <td style="text-align:center;">{$item.date_add} </td>
        </tr>
{foreach$custdata作为$item}
{$item.firstname}
{$item.lastname}
{$item.date_add}

在php中,如果在单引号中有一个字符串,则不能直接在其中使用变量,如:

sql = 'SELECT firstname,lastname FROM ps_customers WHERE date_add >= $select_date';
有两种方法可以在字符串中使用变量,如下所示:

1) 如果使用单引号,请将变量连接到字符串:

sql = 'SELECT firstname,lastname FROM ps_customers WHERE date_add >= '.$select_date;
sql = "SELECT firstname,lastname FROM ps_customers WHERE date_add >= $select_date";
2) 使用双引号:

sql = 'SELECT firstname,lastname FROM ps_customers WHERE date_add >= '.$select_date;
sql = "SELECT firstname,lastname FROM ps_customers WHERE date_add >= $select_date";

同样对于双引号,您可以连接变量,这样就可以了

首先尝试生成转义字符串:

$select_date = pSql($select_date);

然后在SQL中使用$select_date变量

尽管这是asker的查询不起作用的真正原因,但请记住,如果输入来自不可靠的来源(如用户等),请始终转义输入!:-)