2017-10-20 27 views
0

Je cours cette requête dans phpmyadmin et cela fonctionne très bien. Mais en cours d'exécution dans joshcam's MySQLi Database classe, il obtient des données erronées
Requête:MySQLi joint using date (now()) dans la clause where

SELECT 
    s.az 
    , s.ta 
    , s.zamanSarfShode 
    , p.name 
FROM 
    saateruzane s 
JOIN 
    projhe p 
JOIN 
    kareruzane k 
WHERE 
    s.ProjheId = p.id 
AND 
    k.id = s.ruzId 
AND 
    k.ruzGregorian = date(now()) 

Code PHP:

$con->join('projhe p', 's.ProjheId = p.id'); 
$con->join('kareruzane k', 'k.id = s.ruzId'); 
$con->joinWhere('kareruzane k','k.ruzGregorian', 'date(now())'); 
$tines = $con->get('saateruzane s',null,'s.az ,s.ta ,s.zamanSarfShode ,p.name'); 
+0

Vous ne pouvez probablement pas passer '' date (now()) ''comme cela, car il peut essayer de le citer. Essayez de passer dans 'date ('Y-m-d')', sans le citer. – aynber

Répondre

2

La définition joinWhere est

public function joinWhere($whereJoin, $whereProp, $whereValue = 'DBNULL', $operator = '=', $cond = 'AND') 

Vous n'avez pas besoin de passer dans toutes les régions. Essayez plutôt ceci:

$con->joinWhere('kareruzane k','k.ruzGregorian = date(now())'); 

Bien mieux que date(now()) est CURDATE()

$con->joinWhere('kareruzane k','k.ruzGregorian = curdate()'); 

Cependant, je ne suis pas sûr que vous devriez utiliser une jointure ici, car il fait partie de la clause WHERE sur votre original requête, pas la clause JOIN. Donc à la place, faites

$con->where('k.ruzGregorian = curdate()'); 
0

Avec juste un coup d'œil rapide sur cette lib docs, je trouve ceci:

'createdAt' => $db->now(), 
// createdAt = NOW() 

https://github.com/joshcam/PHP-MySQLi-Database-Class#insert-query

Dans votre cas, essayez d'utiliser

$con->joinWhere('kareruzane k','k.ruzGregorian', $con->now()); 
+0

Cela se comparera à une chaîne datetime, au lieu de la chaîne de date que l'OP veut. – aynber