MySQL:从表中选择值,其中value在数组中

时间:2014-02-08 04:23:57

标签: php mysql arrays

我一直在寻找我的解决方案一段时间没有成功。我想我会问网络开发的精英......

我会尽力解释这个。

阵列:

$image_exts = array('jpg','jpeg','gif','png', 'bmp','webp');

我需要做的是这样的事情:

SELECT file_views 
FROM files 
WHERE file_owner='$user_id' 
AND file_ext='$image_exts'

数据库中的“file_ext”字段可以包含一个文件的“jpg”和另一个文件的“mp4”...我只想在此示例中为图像计算视图..

感谢您的时间!

更新2:

function count_totalviews($user_id){
    $image_exts = array('jpg','jpeg','gif','png','bmp','webp');
    $image_array=implode(",", $image_exts);
    $query = mysql_query("SELECT file_views FROM files WHERE file_ext IN ($image_array) AND file_owner='$user_id'");
        $count=0;
            while($row = mysql_fetch_assoc($query)){
                $count = $row['file_views'] + $count;
            }
        return $count;
    }

PHP警告:mysql_fetch_assoc():提供的参数不是有效的MySQL结果

不知道该怎么做......

2 个答案:

答案 0 :(得分:2)

使用mysql的IN,但请确保带括号的图片扩展名列表包含引号中的字符串。

您在更新2 的代码几乎就在那里,但您在这一行遇到了问题:

$image_array=implode(",", $image_exts);

$image_array最终成为jpg,jpeg,gif,png,bmp,webp,当您真正需要它'jpg','jpeg','gif','png','bmp','webp'时,它才能在您的查询中使用。

用以下代码替换该行代码:

$image_array = "'" . implode("','", $image_exts) . "'";

保留其余代码,看看是否有效。

答案 1 :(得分:0)

使用 IN

您可以使用 $ image_Array = implode(“,”,$ image_exts)从阵列中获取列表。

  

SELECT file_views FROM files WHERE file_owner ='$ user_id'AND file_ext IN('$ image_Array')