Je développe actuellement un site web et j'ai un problème d'accès à ma base de donnée mysql à partir de mon code php.
La requête que j'effectue marche sur mysql mais pas en php.
J'ai trouvé une fonction mysql me permettant de réaliser un split sur un des attributs de la table concernée.
CREATE FUNCTION strSplit(x varchar(255), delim varchar(12), pos int) returns varchar(255)
return replace(substring(substring_index(x, delim, pos), length(substring_index(x, delim, pos - 1)) + 1), delim, '');
J'ai un champs date de type String (je ne peux pas le changer en type datetime) dans ma table et j'aimerais récupérer les tuples dont la date est inférieur à la date du jour.
J'utilise pour ce faire le code :
$pDatabase = Singleton::getConnexion("localhost", "root", "root", "AtoB");
$req="select * from trajets where frequency='unique' and ";
$req.="(strSplit(date, '/',3) < strSplit(CURRENT_DATE(), '-',1) or ";
$req.="(strSplit(date, '/',3)=strSplit(CURRENT_DATE(), '-',1) and strSplit(date, '/',2) < strSplit(CURRENT_DATE(), '-',2) ) or ";
$req.="(strSplit(date, '/',3)=strSplit(CURRENT_DATE(), '-',1) and strSplit(date, '/',2)=strSplit(CURRENT_DATE(), '-',2) and strSplit(date, '/',1) < strSplit(CURRENT_DATE(), '-',3)));";
$resultat = $pDatabase->select($req);
while ($data = mysql_fetch_array($resultat) )
{
echo $data['id']."-->";
}
La classe Singleton me permet d'exécuter les requêtes sql en n'ayant qu'un seul accesseur vers la base de donnée.
la fonction sélect est la suivante :
public function select($req)
{
if (!isset($this->id) && empty($this->id)) // Test si une connexion existe si elle n'existe pas
$this->getConnexion($host, $user, $pass, $base); //on essaye dans créer une.
else {
if (!isset($req) && empty($req)){
header("Location:./erreur.php?erreur='requete_invalide'&code='1'");
}
else {
try {
$resultat = mysql_query( $req );
}
catch(Exception $e) {
header("Location:./erreur.php?erreur='requete_impossible'&code='1'");
}
return $resultat;
}
}
}
le problème est que le resultat est vide, alors que la même requête effectué sur mysql retourne plusieurs tuples.Auriez vous une solution à ce problème?
D'avance merci