sql查询中的Prestashop变量
我需要获取客户列表,其中date\u add>$select\u date 使用此选项,我可以输出所选日期: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
$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的查询不起作用的真正原因,但请记住,如果输入来自不可靠的来源(如用户等),请始终转义输入!:-)