Salut à la compagnie,
Je suis en face d'un problème, certainement très simple, mais je ne vois pas ...
J'ai créé deux variables liminf et limsup.


<?php
$key = $_GET['date'];
$liminf = $key."00";
echo $liminf."\n";
$limsup = $key."99";
echo $limsup;
?>


Jusque là, rien de sorcier, comme vous le voyez.
Mais je voudrais exploiter ces variables en SQL, et là ... badaboum !


<?php
header('Content-Type: text/html; charset=utf-8');

	$datasetname='sqlite:labase/labase.db';

    try{
      $dbh=new PDO($datasetname);
	  $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    catch(PDOException $e){
      printf("Échec de la connexion : %s\n", $e->getMessage());
      exit;
    }
	$sql="select * from documents where cle between $liminf and $limsup order by date";
	if(!$dbh->query($sql)) echo "Pb d'accès aux documents";
	else
	{
	?>


Je tombe sur ce message :


SDA00 SDA99
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1 no such column: SDA00' in C:\WorkSite\EasyPHP-12.1\www\Safe\pagen.php:56 Stack trace: #0 C:\WorkSite\EasyPHP-12.1\www\Safe\pagen.php(56): PDO->query('select * from d...') #1 {main} thrown in C:\WorkSite\EasyPHP-12.1\www\Safe\pagen.php on line 56


On dirait que ma requête ne prends pas le contenu de mes variables, mais le nom de ces variables.
Qu'ais- fait de faux ?
Merci a quiconque à une idée, je sais que ça fourmille cgez Alsa.
Avec mes salutations cordiales
H.
Bonjour,

Pour la recuperation de l'url, il serait preferable de la proteger :

    $key = htmlentities($_GET['date']);
Salut,
Tu peux tenter d'entourer tes varaibles $liminf et $limup par des apostrophes simples (') ou des guillemets échappés (\"). Je pense que SQL ne considère pas tes variables comme des valeurs mais comme des colonnes.

$sql="SELECT * FROM documents WHERE cle BETWEEN '$liminf' AND '$limsup' ORDER BY date";

ou

$sql="SELECT * FROM documents WHERE cle BETWEEN \"$liminf\" AND \"$limsup\" ORDER BY date";

https://sql.sh/cours/where/between
Modifié par MatthieuR (08 May 2021 - 20:54)
Merci MatthieuR,
Désolé de n'avoir pas répondu à ton message, je suis pris dans une autre tempête, voir mes différents post !
Je vais tester tout soudain les deux solutions que tu préconises, et je te ferai rapport ... deux ou trois jours !
Si ça marche, je marquerai ce sujet comme résolu.
Avec mes salutations
H.
Merci MathieuR,
J'y suis venu, enfin !
J'ai testé les deux solutions que tu m'as indiquées. Les deux fonctionnent. J'ai choisi la première, qui était pour moi la plus simple au niveau typographie !!!
Encore merci de t'être penché sur ce problème.
Cordialement
H.
Meilleure solution