ich versuche, Filter auf meine Abfrage basierend auf der URL der Seiten anzuwenden. Es scheint jedoch nicht die richtigen Daten aus meiner Datenbank zurückzugeben.
if ($_GET['from'] == '' && $_GET['to'] == '') {
$query = 'SELECT * FROM mhs_dashboard_revenue';
echo 'none';
} else if ($_GET['from'] == '' && $_GET['to'] != '') {
$query = 'SELECT * FROM mhs_dashboard_revenue WHERE DateOfData BETWEEN 20150101 AND "$_GET[to]"';
echo 'to';
} else if ($_GET['from'] != '' && $_GET['to'] == '') {
$query = 'SELECT * FROM mhs_dashboard_revenue WHERE DateOfData BETWEEN "$_GET[from]" AND 20900101';
echo 'from';
} else if ($_GET['from'] != '' && $_GET['to'] != '') {
$query = 'SELECT * FROM mhs_dashboard_revenue WHERE DateOfData BETWEEN "$_GET[from]" AND "$_GET[to]"';
echo 'both';
}
$result = mysqli_query($connection, $query);
$totalChampagne = 0;
$totalSpirts = 0;
$totalWine = 0;
$total = 0;
while($row = mysqli_fetch_assoc($result)) { ?>
<?php
$totalChampagne = $totalChampagne + $row['ChampagneValue'];
$totalSpirts = $totalSpirts + $row['SpirtsValue'];
$totalWine = $totalWine + $row['WineValue'];
$total = $totalChampagne + $totalSpirts + $totalWine;
?>
<!--
<p>Id: <?php //echo $row['ID']; ?></p>
<p>Date of: <?php //echo $row['DateOfData']; ?></p>
<p>Champagne: <?php //echo $row['ChampagneValue']; ?></p>
<p>Spirts: <?php //echo $row['SpirtsValue']; ?></p>
<p>Wine: <?php //echo $row['WineValue']; ?></p>
<hr>
-->
<?php } ?>
<p>Champagne Total = £<?php echo $totalChampagne; ?></p>
<p>Spirts Total = £<?php echo $totalSpirts; ?></p>
<p>Wine Total = £<?php echo $totalWine; ?></p>
<p>Total = £<?php echo $total; ?></p>
Ich habe in jedem IF Echo hinzugefügt meine Werte werden erhalten stellen Sie sicher, und ich kann das Echo an der richtigen Stelle auf der Grundlage der URL sehen.
Die URL sieht wie - revenue_feed.php aus = 20160101 & zu = 20161115, das ist ein Datum, das ohne die Bindestriche formatiert ist, als wenn ich manuell das Eingeben des Datums prüfte, Bindestriche brach es.
Ich hoffe, es ist eine einfache Lösung, aber ich kann nicht scheinen, es auszuarbeiten. Alle Hilfe wird sehr geschätzt.
Dieser Ansatz macht Ihre Anwendung _wide open_ zu SQL-Injection-Attacken. Informieren Sie sich über die Sicherheitsvorteile der Verwendung von "vorbereiteten Anweisungen" in Kombination mit "Parameterbindung". Diese Details sind ein _must_, es ist nicht "nett zu haben". – arkascha
@arkascha Vielen Dank, ich bin mir bewusst, aber es wird eine geschlossene Website sein, so dass sqi Injektion nicht ein Problem sein sollte, aber wenn ich die Striche entkommen werde? –
Nein, nicht manuell entkommen. Wie geschrieben: Verwenden Sie "vorbereitete Anweisungen" in Kombination mit "Parameterbindung". Und _please_ nicht verschieben, weil "es nicht im Moment erforderlich ist". Sie werden sicher nicht alle Ihre Anwendungen durchgehen und später alles noch einmal ändern, sobald alles funktioniert. Tu es jetzt, es dauert nicht länger. – arkascha