我遇到的问题是我无法选择每个帖子的前500个字符。 (帖子存储在MySQL数据库中)。我现在的代码是:
$link = mysqli_connect( 'localhost', 'jfairbanks_dbuser', 'password' );
mysqli_select_db( $link, 'jfairbanks_database' );
$results = mysqli_query( $link, "SELECT post FROM Users where verified = 1 LIMIT 0 , 10" ); //this displayes all the posts that have been verified
while( $record = mysqli_fetch_assoc( $results ) ) {
$post = $record['post'];
print $post;
}
mysqli_free_result( $results );
mysqli_close( $link );
?>
该代码选择所有经过验证并且不错的帖子中的所有字符,但我需要限制显示的帖子的长度。 (我只想看到前500个字符)。
我尝试使用LEFT(post, 500)
等其他内容,但这不起作用。
答案 0 :(得分:1)
你需要的是mysql的LEFT功能
SELECT LEFT(post,500) AS post FROM Users where verified = 1 LIMIT 0 , 10
在你发表评论之前,我甚至都不知道PHP有左功能?或许这是你写的东西?在PHP中使用子字符串的常用方法是使用substr函数。但是在mysql中使用子字符串会更有效,因为传输的数据更少。
另请注意添加AS post以将生成的列别名发布,以便可以在PHP代码中检索它。
答案 1 :(得分:0)
正如我在评论中提到的,您需要在MySQL中使用LEFT()
函数后为您的字段提供别名。
您的查询如下所示:SELECT LEFT(post,500) AS post FROM Users ...
通过使用post
对其进行别名,您现在可以像以前一样在关联数组中访问它:
$post = $record['post'];
在sql查询中没有别名时,数组没有post
的键,并抛出您收到的异常。