添加子字符串时数据库循环中断,what';s错误


Database loop broken when I add substr, what's the error?

我创建这个脚本已经有很长一段时间了,我又遇到了一个错误。这是代码块。

$query=$db->prepare("SELECT post_id, title, body, category FROM posts INNER JOIN categories ON categories.category_id=posts.category_id ORDER BY post_id DESC LIMIT $start, $per_page");
    $query->execute();
    $query->bind_result($post_id, $title, $body, $category);    
while($query->fetch()):
     $lastspace = strrpos($body, ' ');?>
    <article>
    <h2><?php echo $title?></h2>
    <?php echo  $category;?>
    <?php echo "<br><br>";?>
    <p><?php echo nl2br (substr($body, 0, $lastspace)). "<br><a href='post.php?id=$post_id'>Read More</a>"?></p>
    <?php echo "<hr>"?>
    </article>
    <?php endwhile ?>

$db变量是数据库连接。

"error"出现在php echo nl2br行,创建并添加substr$lastpacehref后,$body将不会回显。当我删除这些时,脚本运行,while循环得到$body

我没有收到任何错误或任何东西,$body将拒绝出现。如果可能的话,要友善:)
我的错误是什么?

substrnl2br调用分开,以避免错误导致循环终止。这样,如果$body_sub为空,nl2br将警告您,但不会终止脚本:

<?php
  $body_sub = substr($body, 0, $lastspace);
  echo nl2br($body_sub);
?>

此外,这纯粹是表面上的,但您的代码看起来很混乱。为什么不让PHP回显HTML,而不是在HTML中到处插入<?php ?>标记呢?