Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取行并分解-PHP mySQL_Php_Mysql_Row_Fetch_Explode - Fatal编程技术网

获取行并分解-PHP mySQL

获取行并分解-PHP mySQL,php,mysql,row,fetch,explode,Php,Mysql,Row,Fetch,Explode,这是我的密码: $postsql = "SELECT * FROM post WHERE id='{$_GET['id']}'"; $posts = mysqli_query($connect,$postsql) or die("Error: ".mysqli_error($connect)); $post = mysqli_fetch_array($posts); $postAuthor = $post['author']; $postDate = $post['date']; $post

这是我的密码:

$postsql = "SELECT * FROM post WHERE id='{$_GET['id']}'";
$posts = mysqli_query($connect,$postsql) or die("Error: ".mysqli_error($connect));
$post = mysqli_fetch_array($posts);

$postAuthor = $post['author'];
$postDate = $post['date'];

$postCat = mysqli_fetch_row($post['cat']);// I've tags here separated by commas.
$postCatTag = explode(",",$postCat);

$postText = $post['text'];

echo "<img class='view_newsimg' src='{$postImg}'>
<h3 class='lath'>{$postTitle}</h3>
<ul class='det'><li class='adc'>avtori: {$postAuthor}</li>
<li class='adc'>TariRi: {$postDate}</li>
<li class='adc'>kategoria: <a href='#'>{$postCatTag}</a></li>"; // tags are shown here
echo <<<TEXT
<p class="news">{$postText}</p>
TEXT;
因此,浏览器中的“标记”部分将显示: 卡蒂戈里亚:阵列 而不是显示表中的标记。
为什么?如何获得所需的结果?

$postattag是一个数组。数组到字符串的转换总是产生数组。您可以使用-函数使用给定的分隔符来存储数组:

implode(', ', $postCatTag);

或者您可以只使用$POSTAT,因为它已经是由“,”分隔的字符串标记。

$POSTATTAG是一个数组。阵列不能通过echo显示

为此使用循环:

for($i=0;$i<count($postCatTag),$i++){

  echo "<li class='adc'>kategoria: <a href='#'>$postCatTag[$i]</a></li>";  

}

希望它对您有用。

如果您想显示标签列表,请不要分解列表。但是标签不止一个,我希望它们有单独的链接。那么您应该使用循环。您需要什么样的标签输出?我需要并列显示单独的链接我知道,请参阅我答案的最后一行。内爆部分是为了完整性,以防他需要自定义分隔符。如果变量中已经有逗号分隔的值,那么内爆需要什么?可能是因为tag1、tag2、tag3看起来比tag1、tag2、tag3好。我不建议使用与爆炸相同的分隔符再次内爆。您的db是否也包括逗号后的空格?在这种情况下,只需将{$postattag}替换为{$postat}。否则使用……以及如何插入?替换kategoria:;检查我的代码并让我知道。我的代码中有一个小错误。我在回答中重新编辑了它。它是$I吗?这样:echo{$postTitle}avtori:{$postAuthor}TariRi:{$postDate}for$i=0$这是因为您的数组$PostAttag为空。不要用“代替”。编译器读取并转换内部的所有内容,但当它出现在accross'中时,它只是将其打印出来。在某处写下print\r$postattag,然后查看结果。它将在数组中显示内容。将帮助您调试代码。
    echo "<li class='adc'>kategoria:'; 
    for($i=0;$i<count($postCatTag),$i++)
    {

              echo "<a href='#'>$postCatTag[$i]</a>";  

    }
    echo "</li>";