我可以在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
吗?
答案 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"). '';
}
这可能会有所帮助