2016-05-16 7 views
2

Ich habe 24 Daten auf einem SQL-Server. Wenn meine Webseite gestartet wird, werden all diese Daten einzeln vom Server abgerufen und angezeigt. Sieht wie folgt aus:Wie kann ich einen dynamischen PHP-Variablennamen aufrufen?

$sql = "SELECT `$dateName` FROM `$user` WHERE hour=2"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    while ($row = $result->fetch_assoc()) { 
     $hour2 = $row[$dateName]; 
    } 
} 
$sql = "SELECT `$dateName` FROM `$user` WHERE hour=3"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    while($row = $result->fetch_assoc()) { 
     $hour3 = $row[$dateName]; 
    } 
} 

etc ... bis Stunde 24

Aber ich denke, es ist besser, mit einer for-Schleife. Gefällt mir:

for ($x = 1; $x <= 24; $x++) { 

    $sql = "SELECT `$dateName` FROM `$user` WHERE hour=`$x`"; 
    $result = $conn->query($sql); 

    if ($result->num_rows > 0) { 
     while($row = $result->fetch_assoc()) { 
      $hour.$x = $row[$dateName]; 
     } 
    }       
} 

Ich möchte $ Stunde1, $ Stunde2, $ Stunde3 anrufen. Durch Hinzufügen von $ x zu $ ​​Stunde. Wie mache ich das? Ich danke dir sehr!

Antwort

3

Anstatt dynamische Variablen zu generieren, würde ich vorschlagen, Array von $ Stunden zu erstellen.

$hour = array(); 
for ($x = 1; $x <= 24; $x++) { 

    $sql = "SELECT `$dateName` FROM `$user` WHERE hour=`$x`"; 
    $result = $conn->query($sql); 


    if ($result->num_rows > 0) { 
     while($row = $result->fetch_assoc()) { 
      $hour[$x][] = $row[$dateName]; 
     } 
    } 
} 

Damit Sie wie $ Stunde zugreifen können [1], $ h [2] ... etc ...

+0

Große Antwort! Vielen Dank! –

+0

Willkommen Freund :) –

2

Wickeln Sie sie in ${'hour'.$x} = $row[$dateName]

+0

Nicht sicher, ob dies die beste Lösung ist oder nicht (vielleicht ist das Array effizienter), aber das funktionierte für mein Problem, sehr einfache Integration und arbeitete wie ein Charme! Ich danke dir sehr. –

+0

Ja, hast du recht, das ist nicht die beste Lösung. Die beste Lösung ist ein Array mit den Stunden $ hour [1], etc .. Wie @Jayesh Chitroda Beiträge. Dies ist nur die Antwort auf Ihre Frage, schön es zu wissen :) –

1

Sie können $ hour als Array erstellen, $ x als Schlüssel verwenden und die entsprechenden Werte für die Schlüssel festlegen.

Beispiel:

$hours = array(); 

for ($x = 1; $x <= 24; $x++) { 

    $sql = "SELECT `$dateName` FROM `$user` WHERE hour=`$x`"; 
    $result = $conn->query($sql); 

    if ($result->num_rows > 0) { 
     while($row = $result->fetch_assoc()) { 
      $hour[$x] = $row[$dateName]; 
     } 
    } 
} 

echo $hour[1]; 

Hinweis:

Sie sollten mit einer effizienteren Art und Weise betrachten, in denen Sie nicht für jede Stunde in die Datenbank 24 unterschiedliche Zeiten verbinden müssen.

Beispiel:

$sql = "SELECT `$dateName` FROM `$user` ORDER BY hour ASC"; 

Dies wird alle 24 Zeilen in einer Abfrage zurück, dann können Sie die Daten mit PHP manipulieren.

1

function pullRequest($dateName,$user,$x){ 
 
    //Define $conn here 
 
    $sql = "SELECT `$dateName` FROM `$user` WHERE hour=`$x`"; 
 
    $result = $conn->query($sql); 
 
    $hour = array(); 
 
    if ($result->num_rows > 0) { 
 
     while($row = $result->fetch_assoc()) { 
 
      $hour[$x] = $row[$dateName]; 
 
     } 
 
    } 
 
    return $hour[$x]; 
 

 
} 
 

 
Then you can call it like this 
 
$dateName ="DATENAME"; 
 
$user="USER"; 
 
for ($x = 1; $x <= 24; $x++) { 
 
    pullRequest($dateName,$user,$x); 
 
}

Verwandte Themen