Php 如何使用mb_substr获取数据?

Php 如何使用mb_substr获取数据?,php,mysql,Php,Mysql,我可以在PHP中使用mb_substr来获取部分字符串,我的问题是我想在MySQL中使用这个函数来获取部分字段数据,我不想使用foreach来获取部分字段数据 我想在下面的代码中使用这个函数 subject是500个字符,我想从中获取150个字符,我的数据库是UTF-8,我的存储引擎是MyISAM $allContents = $db->loadAssoc( $db->setQuery("SELECT id , subject FROM contents ;") );

我可以在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

将查询修改为:

SELECT id, SUBSTRING(subject, 1, 150) FROM contents;
但由于您是从第一个角色开始,因此可以使用:

$query=mysql\u query(“设置名称UTF8”);
$sort_content=strlen($row['sort_content']);
如果($sort_content>260)
{
$sort=mb_substr($row['sort_content'],0260,“utf-8”);
}
elseif($sort\u内容
SELECT id, LEFT(subject, 150) FROM contents;
$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"). '';
                }