Ce que j'essaie de faire est d'obtenir la date d'entrée de HTML, exécutez une requête en utilisant cette date. Mais je n'arrive pas à comprendre quel est le problème, je fais tout ce que tout va bien (ou suis-je?)
Voici quelques index de code.php p>
// get the q parameter from URL $servername = "localhost"; $username = "root"; $password = ""; $dbname = "chaska"; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $input_date=$_REQUEST['q']; $date=date("Y-m-d",strtotime($input_date)); $sql = "SELECT `tec_sale_items`.product_name, `tec_sales`.date, sum(`tec_sale_items`.quantity) AS sum FROM `tec_sale_items` LEFT JOIN `tec_sales` ON `tec_sale_items`.sale_id = `tec_sales`.id WHERE DATE(`tec_sales`.date) = $date AS DATE group by `tec_sale_items`.product_name, DATE(`tec_sales`.date)"; $result = $conn->query($sql); echo $date; if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "product: " . $row["product_name"]. " - Quantity: " . $row["sum"]. " ". "<br>"; } } else { echo "0 results"; } $conn->close(); ?>
3 Réponses :
Qu'est-ce que vous avez fait, c'est le droit mais utilisez du texte au lieu de date p> p>
WHERE DATE(`tec_sales`.date) = '$date'
Ce n'est pas parce que cette valeur est sûre, cela ne signifie pas que vous pouvez l'injecter dans la requête SQL. Vous devriez viser à utiliser des déclarations préparées 100% du temps.
Ce qui suit est une syntaxe SQL illégale pour deux raisons; Il manque des citations autour de la variable code> $ code> (qui est une chaîne) et vous essayez de lui donner un alias (tout ce que vous faites est comparant deux valeurs, donc aliasing a peu de sens ici). < Pré> xxx pré>
Vous devez également utiliser une instruction préparée avec MySQLI, comme indiqué ci-dessous. L'utilisation d'une déclaration préparée signifie que vous n'avez plus besoin de vous soucier de cibler vos variables. p>