我有一个问题,我无法选择每个帖子的前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)
,但这不起作用。
您需要的是mysql
的左功能SELECT LEFT(post,500) AS post FROM Users where verified = 1 LIMIT 0 , 10
我什至不知道PHP有左功能,直到您的评论?也许这是您写的东西?在PHP中取代的通常方法是使用substr函数。但是在MySQL中进行子字符串更有效,因为传输数据较少。
还请注意,将AS帖子添加到别名为"生成的列"发布中,以便可以在PHP代码中检索。
正如我在评论中提到的那样,在使用mySQL中使用LEFT()
函数后,您需要为您的字段提供别名。
您的查询看起来像这样:SELECT LEFT(post,500) AS post FROM Users ...
通过使用post
将其辩护,您现在可以像以前一样在关联数组中访问它:
$post = $record['post'];
在SQL查询中没有别名,该数组没有post
的键,并且会抛出您收到的例外。