2014-07-25 3 views
0

Je dois obtenir des clients liste OÙ date_add> $ select_datePrestashop var dans sql requête

Avec ce que je peux sortie date sélectionnée:

$this->context->smarty->assign('select_date' , Configuration::get('SELECT_DATE')); 

Alors var: select_date et valeur: SELECT_DATE (son type d'entrée = "date")

sql = 'SELECT firstname,lastname FROM ps_customers WHERE date_add >= ("2014-07-21")'; 

Avec cette requête, cela fonctionne parfaitement.

Si j'utilise:

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

Je reçois juste erreur: PrestaShopDatabaseException - Unknown column 'select_date de $' dans 'where'.

Donc, il semble que je ne peux pas utiliser mes vars dans la requête SQL, alors comment faire pour que cela fonctionne correctement?

Aussi je pense que c'est peut-être mieux d'obtenir tous les clients dans ARRAY et d'utiliser la condition dans le fichier TPL pour imprimer uniquement la date qui => {select_date} mais comment écrire une telle condition?

{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> 

Répondre

1

En php, si vous avez une chaîne entre guillemets simples, vous ne pouvez pas utiliser une variable directement, comme:

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

Il y a deux façons d'utiliser une variable dans un chaîne comme ci-dessous:

1) concaténer la variable de la chaîne si l'apostrophe:

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

2) Double utilisation quotes:

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

De même pour les guillemets, vous pouvez concaténer la variable, ça ira.

+0

Altough c'est la vraie raison pour laquelle la requête de asker ne fonctionne pas, rappelez-vous toujours ** * toujours échapper l'entrée si elle provient d'une source non fiable *** (comme utilisateur, etc ...)! :-) –

0

Essayez de faire une chaîne d'échappement d'abord:

$select_date = pSql($select_date); 

Et puis utilisez la variable select_date de $ dans SQL