【问题标题】:explode multi-dimentional array stored in mssql as multiple rows将存储在mysql中的多维数组分解为多行
【发布时间】:2016-11-15 04:41:08
【问题描述】:

我正在尝试安排明天的会议,并从保存在 ms sql 表中的行中获取用户 id 作为逗号分隔值,使用 id 我必须从另一个表中获取他们的联系电话我在这里尝试过类似的事情我只能得到第一个数组的值我知道我在这里做错了但我不知道在哪里

    $date=date("d-m-Y", time()+86400);
    $start_time=strtotime($date.", 12:01 AM");
    $end_time=strtotime($date.", 11:59 PM");
    $sql=$db->Query("select * from pp_meeting where m_date > ? and m_date < ?", array($start_time, $end_time));

    while($row=$db->FetchRow($sql)){
        $users[]=explode(",", $row['m_users']);
        foreach($users as $us){
                foreach($us as $u){
                $sql=$db->Query("select contact_no from pp_users where user_id=?", array($u));
                echo $result=$db->FetchOne($sql);echo "<br/>";
                }
            }
        }

谢谢

【问题讨论】:

  • 没有循环中的mysql查询。它每次都会创建一个请求并且需要很多时间。使用IN查询
  • @user3040610 感谢您的解决方案,如果我将 foreach 放在 while 循环之外,它工作正常。
  • ,如果cmets帮助了你,请投票。

标签: php arrays sql-server


【解决方案1】:

您可以使用 1 个嵌套查询而不是循环查询

"select contact_no from pp_users where user_id in  
(select user_id from pp_meeting where m_date > ? and m_date < ?)"  

或者你可以使用join

"select contact_no  
from pp_users join pp_meeting on user_id=user_id  
where m_date > ? and m_date < ?"  

【讨论】:

  • 感谢您的解决方案,如果我将 foreach 放在 while 循环之外,它可以正常工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-24
  • 2011-07-26
  • 2020-12-14
  • 2016-05-12
  • 2011-06-10
  • 2019-08-08
  • 1970-01-01
相关资源
最近更新 更多