Ich muss eine SQL-Abfrage dynamisch tun. Mein Code ist einfach zu verstehen: Meine Funktion empfängt ein Array und eine Zeichenfolge, die die Abfrage enthält, und ich werde das Array durchlaufen, um die Schlüsselwerte im "Where" -Teil meiner Abfrage zu verwenden. Hier ist ein Teil des Codes:Reset String nach Schleife Iteration PHP
function graficoTeste ($array, $sql) {
$conn = connect();
foreach ($array as $key => $value) {
$sql .= "'". $key. "'";
$result = $conn->query($sql);
if(!$result)
echo $conn->error;
while($row = $result->fetch_assoc()) {
$array[$key] = $row["count_est"];
}
}
Das Problem ist: Ich brauche, dass meine Anfrage, die die $ key Wert jedes Mal, wenn die foreach Iterierten fügt hinzu, aber ich bin verketten die Zeichenfolge $ sql (die die eigentliche Abfrage enthält) mit $ key, was dazu führt:
SELECT COUNT(Estudante) AS count_est FROM `2016-1` WHERE municipio='Jatai'
SELECT COUNT(Estudante) AS count_est FROM `2016-1` WHERE municipio='Jatai''Goiânia'
SELECT COUNT(Estudante) AS count_est FROM `2016-1` WHERE municipio='Jatai''Goiânia''Goiás'
SELECT COUNT(Estudante) AS count_est FROM `2016-1` WHERE municipio='Jatai''Goiânia''Goiás''Catalão'
Und ich muss es sein:
SELECT COUNT(Estudante) AS count_est FROM '2016-1' WHERE municipio='Jatai'
SELECT COUNT(Estudante) AS count_est FROM `2016-1` WHERE municipio='Goiânia'
SELECT COUNT(Estudante) AS count_est FROM `2016-1` WHERE municipio='Goiás'
SELECT COUNT(Estudante) AS count_est FROM `2016-1` WHERE municipio='Catalão'
gibt es eine Möglichkeit, die $ sQL-Zeichenfolge auf den Standard (ohne die Taste $ auf die zurückkehren Ende) für jedes Mal, wenn die Schleife iteriert?
Vielen Dank (Sorry für mein schlechtes Englisch und für den portugiesischen Code, hahah).
Was für ein wunderbares Beispiel, warum sollten Sie * immer * Verwendung Parameter statt munging Werte in Query-Strings zu illustrieren. –
Aber wenn das zu schwer für dich ist, dann '$ result = $ conn-> query ($ sql. ''". $ Key. "'"); ' –
Wo definierst du die Variable' $ sql'? Wenn Sie möchten, dass es bei jeder Schleifeniteration "zurückgesetzt" wird, dann klingt es so, als ob es * in der Schleife * definiert sein sollte. Oder zumindest nicht von der Schleife verändert. – David