我在SQL服务器上有24条数据。当我的网页启动时,它会从服务器上一次一个地提取所有这些数据并显示出来。看起来像这样:
$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];
}
}
等等。。。直到24小时。
但我认为用for循环更好。像这样:
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];
}
}
}
我想打$hour1,$hour2,$hour3。通过将$x添加到$hour。我该怎么做?非常感谢!
我建议创建$hours数组,而不是生成动态变量。
$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];
}
}
}
这样你就可以访问$hour[1]、$hour[2]。。。等等。
将它们包装到${'hour'.$x} = $row[$dateName]
您可以使用变量:
${"hour" . $x} = $row[$dateName];
您可以创建$hour作为数组,使用$x作为键,并为键设置适当的值。
例如:
$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];
注:
您应该考虑使用一种更有效的方式,即不必每小时24次单独连接到数据库。
例如:
$sql = "SELECT `$dateName` FROM `$user` ORDER BY hour ASC";
这将在一个查询中返回所有24行,然后您可以使用PHP操作数据。
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);
}