2017-08-07 4 views
-2

Problem ist: Ich möchte die Nummer in meiner Spalte r_start zählen, wo die r_start Daten sind zwischen meinen anderen zwei Variablen. Aber es gibt mir immer die Fehlermeldung: Undefined variable: z in [path] on line 173. So füllt es die Variable nicht, was mich denken lässt, dass die COUNT nicht porperly funktioniert. Ich habe eine Menge von reasearch und versucht, einige Dinge, aber ich einfach nicht die Ursache finden ..MySQL Count füllt keine Variable

$sqld = "SELECT r_start, COUNT (*) FROM reservation WHERE r_start BETWEEN '".$cid."' and '".$cod."' GROUP BY r_start"; 
if ($result = $con->query($sqld)) { 
    $z = mysqli_fetch_assoc($result); 
} 

Dieser Fehler tritt nur mit dem COUNT-Tag. Bei meinen anderen Anfragen funktioniert es absolut gut. f.e .:

$sqlc = "SELECT * FROM reservation where r_ende between '".$cid."' and '".$cod."'"; 
if ($result = $con->query($sqlc)) { 
    $y = mysqli_fetch_assoc($result); 
} 

Kann mein jemand sagen, warum? Habe ich etwas falsch gemacht?

+0

http://php.net/manual/mysqli.quickstart.prepared-statements.php – Phil

Antwort

1

MySQL erkennt im Allgemeinen einen Abstand zwischen einer Funktion und dem öffnenden paren nicht. Ich würde auch empfehlen, dass Sie der Spalte einen Alias ​​geben:

SELECT r_start, COUNT(*) as cnt 
FROM reservation r 
WHERE r_start BETWEEN '".$cid."' and '".$cod."' 
GROUP BY r_start; 

Sie sollten auch lernen, Parameter zu verwenden, um Werte in Abfragen zu übergeben. Wenn Sie keine Parameter verwenden, unterliegt der Code unerwarteten (und schwer zu debuggenden) Syntaxfehlern und macht ihn anfällig für SQL-Injection.