如何使用mb_substr获取数据?

时间:2013-08-18 07:07:36

标签: php mysql

我可以在PHP中使用mb_substr并获取字符串的一部分,我的问题是我想在MySQL中使用此函数并获取部分字段数据,我不想使用foreach来得到一部分。

我想在下面的代码中使用此函数。

subject是500个字符,我希望从中获取150个字符,我的数据库是UTF-8,我的存储引擎是MyISAM。

        $allContents = $db->loadAssoc( $db->setQuery("SELECT id , subject FROM contents ;") );
        if ( $allContents ){
            $data['success'] = true;
            $data['message'] = $allContents; 
        }
        else{
            $data['success'] = false;
        }

我不喜欢使用这种方法:

$arr = array();
foreach ( $allContents as $value )
{
   $topic['id']      = $value['id'];
   $topic['subject'] = mb_substr($value['subject'],0,150,'UTF-8').' ... ';
   $arr = $topic ;
}

我可以像使用此代码一样在MySQL中使用substr吗?

2 个答案:

答案 0 :(得分:1)

执行此操作的MySQL函数为SUBSTRING()

将您的查询修改为:

SELECT id, SUBSTRING(subject, 1, 150) FROM contents;

但是,由于你是从第一个角色开始的,所以你可以使用LEFT()

SELECT id, LEFT(subject, 150) FROM contents;

答案 1 :(得分:1)

$query=mysql_query("SET NAMES UTF8");                   
                $sort_content=strlen($row['sort_content']);             
                if($sort_content>260) 
                {
                    $sort = mb_substr($row['sort_content'],0,260, "utf-8"). '...';
                }
                elseif($sort_content<250) 
                {
                    $sort = mb_substr($row['sort_content'],0,250, "utf-8"). '';
                }

这可能会有所帮助