2012-06-04 54 views
1

名为users的数据库表有一列timemarksin_array()不返回所有结果

timemark领域是这样的.. 11:00:00, 13:45:00, 17:00:00, 18:25:00(时间标记改变为每个用户)

我的PHP脚本应该列出谁拥有一个特定的时间标记的用户。

查询:通过分割使用str_getcsv

  • timemarks串

    1. 迭代通过用户
    2. 创建阵列$timemarks_arr为每个用户:SELECT * FROM ('users')(查询结果返回给$users

      环路用指定的时间标记值回显用户

    foreach ($users as $user): 
    
        $timemarks_arr = str_getcsv($user->timemarks); //split time-marks by comma and create array 
    
        if (in_array("17:00:00", $timemarks_arr)) //users with specified time-mark 
        {        
         echo $entry->username . "<br />"; 
        } 
    
    endforeach; 
    

    出于某种原因,回声只有2的用户,但也有更多的带有时间标记17:00:00。有谁知道为什么?

  • 回答

    4

    它不会匹配像17:00:00这样的值,因为有一个前导空间。

    试试这个从字符串的开头和结尾剥去所有空格:

    $timemarks_arr = array_map("trim", str_getcsv($user->timemarks)); //split time-marks by comma and create array 
    
    +0

    是的,空格是一种常见的小姐出的问题。 – Raptor

    +0

    谢谢!修剪似乎工作。为了避免任何其他问题,我正考虑在添加到数据库时将'00:00:00'时间格式更改为时间戳字符串 – CyberJunkie