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.