如何从mysql db表中检索文本字段,而不是整个文本,只需要几个40个左右的字符。
这可以在sql中完成还是我需要使用php来完成?
基本上我要做的就是显示前x个字符,然后让用户点击它来查看完整内容。
答案 0 :(得分:59)
SELECT LEFT(field, 40) AS excerpt FROM table(s) WHERE ...
请参阅LEFT()
功能。
作为经验法则,你永远不应该在PHP中为MySQL做些什么。可以这样想:您不希望从数据库向请求的应用程序传输超出必要的任何内容。
编辑 如果您将在同一页面上使用整个数据 (即没有中间请求)不,没有理由不一次获取全文。 (见评论和Veger's answer。)
答案 1 :(得分:5)
SELECT LEFT(MY_COLUMN, 40) FROM MY_TABLE
MySQL参考手册中的函数:
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_left
答案 2 :(得分:3)
试试这个......
SELECT LEFT(字段名称,40)FROM表名WHERE条件表示前40和
SELECT RIGHT(字段名称,40)FROM table name WHERE condition for last 40
答案 3 :(得分:1)
您可以在SQL中执行此操作,因为其他已显示。
但是,如果您也想要在用户点击它时显示全文,您还需要全文,让数据库向您发送短文和全文似乎是浪费文本。因此,您可以抓取全文并编写一些代码,以便在用户点击时显示短文本和全文。
$result = mysql_query('SELECT text FROM table');
$row = mysql_fetch_row($result);
echo '<div onclick="alert(\''.$row[0].'\');">'.substr($row[0], 0, 40).'</div>';
当你点击它时,你可以做更好的事情(而不是alert()
)。此外,您现在可以进行一些PHP检查以查看原始文件是否短于40个字符,并处理这种情况。
答案 4 :(得分:0)
同时检查一下,
mysql_query('SELECT LEFT('your text/fieldname', 40) FROM tablename');