Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP从while循环中获取外部变量_Php_Mysql - Fatal编程技术网

PHP从while循环中获取外部变量

PHP从while循环中获取外部变量,php,mysql,Php,Mysql,在我的PHP脚本中,我进行了一个mysql\u查询: $full_alarm_sql = " SELECT alarms.id, alarms.date, clients.name, clients.number, alarms.controller, alarmstype.type, alarms.alarmstatus, alarms.starttime, alarms.endtime, DATEDIFF(CURDATE(), alarms.da

在我的PHP脚本中,我进行了一个mysql\u查询:

  $full_alarm_sql = "
          SELECT alarms.id, alarms.date, clients.name, clients.number, alarms.controller, alarmstype.type, 
          alarms.alarmstatus, alarms.starttime, alarms.endtime, DATEDIFF(CURDATE(), alarms.date) AS difference
          FROM alarms
          LEFT JOIN clients ON alarms.clientid = clients.id
          LEFT JOIN alarmstype ON alarms.typeid = alarmstype.id
          WHERE DATEDIFF(CURDATE(), alarms.date) <=" . $type . " AND clients.number = " . $market;
  $full_alarm_query = mysql_query($full_alarm_sql);
因此,我现在这样做似乎不是最好的方式,这意味着while循环中的变量会被一次又一次地覆盖,直到循环结束,然后我才能使用用户获取信息

我想知道是否有更好/更有效的方法来做我想做的事情


提前谢谢

是的,有更好的方法。您可以首先声明一个数组并将获取的内容保存在该数组中,然后在该数组中循环。像这样

 $fetched_arr = array();
while ($full_alarm_fetch = mysql_fetch_array($full_alarm_query)) {
  $fetched_arr[] = $full_alarm_fetch;
}
然后循环数组

foreach($fetched_array as $something)
 {
    //here you can save the values in the $content
    // you can use $somethin['date'] and etc.. 
 }

是的,有更好的办法。您可以首先声明一个数组并将获取的内容保存在该数组中,然后在该数组中循环。像这样

 $fetched_arr = array();
while ($full_alarm_fetch = mysql_fetch_array($full_alarm_query)) {
  $fetched_arr[] = $full_alarm_fetch;
}
然后循环数组

foreach($fetched_array as $something)
 {
    //here you can save the values in the $content
    // you can use $somethin['date'] and etc.. 
 }
你的代码很好。你可以一次抓住整个rs然后循环

while ($rs[] = mysql_fetch..);
//done..
for($i=0;$i<sizeof($rs);$i++) or
foreach($rs as $rec)
while($rs[]=mysql\u fetch.);
//完成。。
对于($i=0;$i您的代码很好。您可以一次获取整个rs,然后循环

while ($rs[] = mysql_fetch..);
//done..
for($i=0;$i<sizeof($rs);$i++) or
foreach($rs as $rec)
while($rs[]=mysql\u fetch.);
//完成。。

对于($i=0;$i)你们两个都支持快速响应。但是再次添加另一个函数(for循环)拉取两个我已经在另一个变量中得到的变量听起来不太正确。对于我已经在脚本中得到的信息,这不是太多代码吗?另一种方法是,在循环之前,将变量$client_name设置为FALSE,然后在循环中生成if(!$client_name){$client_name=$statics_fetch['number'].$statics_fetch['name'];},然后变量的设置将只出现一次,但if语句现在会再次重复它自己。@FedeSc:我也不会使用另一个循环。这肯定比在每个循环中覆盖变量的执行时间更昂贵。正如您所说,您可以检查变量是否已经有值,或者,因为在知道数字之前,您可以只对名称进行单独的查询。但是,这只有在您希望主查询中有许多行时才有好处。无论哪种方式,这都不会浪费太多时间,数组查找和变量分配都非常快operations@cypherabe-是的,考虑到执行时间。所以我想我会坚持使用值变量化方法。感谢大家在这件事上的咨询。为Fede干杯。感谢你们两位的快速响应。但是,再次添加另一个函数(for loop)拉取两个我已经在另一个变量中得到的变量听起来不太正确。对于我已经在脚本中得到的信息,这不是太多代码吗?另一种方法是,在循环之前,将变量$client_name设置为FALSE,然后在循环中生成if(!$client_name){$client_name=$statics_fetch['number'].$statics_fetch['name'];},然后变量的设置将只出现一次,但if语句现在会再次重复它自己。@FedeSc:我也不会使用另一个循环。这肯定比在每个循环中覆盖变量的执行时间更昂贵。正如您所说,您可以检查变量是否已经有值,或者,因为在知道数字之前,您可以只对名称进行单独的查询。但是,这只有在您希望主查询中有许多行时才有好处。无论哪种方式,这都不会浪费太多时间,数组查找和变量分配都非常快operations@cypherabe-是的,考虑到执行时间。所以我想我会坚持价值变异法。谢谢你在这件事上的所有咨询。为Fede干杯。谢谢你的快速回复,我向你推荐我的评论。问候。谢谢你的快速回复,我向你推荐我的评论。问候。