php - 如何修复 "Warning: illegal string offset"

标签 php mysql

以前我尝试将 php pdo 代码翻译成我的 php 版本,但我遇到了这样的问题。 “警告:非法字符串偏移量‘tagName’在……”。有人可以帮助我,我该怎么办?我不知道基本代码。

PDO 版本:

$stmt2 = $db->prepare('SELECT catTitle, catSlug FROM blog_cats, blog_post_cats WHERE blog_cats.catID = blog_post_cats.catID AND blog_post_cats.postID = :postID');
$stmt2->execute(array(':postID' => $row['postID']));
$catRow = $stmt2->fetchAll(PDO::FETCH_ASSOC);
$links = array();
foreach ($catRow as $cat)
{
$links[] = "<a href='c-".$cat['catSlug']."'>".$cat['catTitle']."</a>";
}
echo implode(", ", $links);

我的PHP:

  $check_tag = mysql_query("SELECT tagName, tagSlug FROM tb_tags, tb_tag_posts WHERE tb_tags.tagID = tb_tag_posts.tagID AND tb_tag_posts.postID = '".$post['postID']."'") or die(mysql_error());
  $tagRow = mysql_fetch_assoc($check_tag);
  $tag_links = array();
  foreach($tagRow as $tag){
    $tag_link[] = "<a href=''>".$tag['tagName']."</a>";
  }
  echo implode(", ", $tag_link);

我需要这样创建:tag-1, tag-2

最佳答案

$tagRow 是具有 2 个键/值的单行。 $tag 是一个字符串值。您需要使用 while 循环获取每一行,然后获取值。

  $check_tag = mysql_query("SELECT tagName, tagSlug FROM tb_tags, tb_tag_posts WHERE tb_tags.tagID = tb_tag_posts.tagID AND tb_tag_posts.postID = '".$post['postID']."'") or die(mysql_error());
  $tag_links = array();
  while($tagRow = mysql_fetch_assoc($check_tag);){
    $tag_link[] = "<a href=''>".$tagRow['tagName']."</a>";
  }
  echo implode(", ", $tag_link);

关于php - 如何修复 "Warning: illegal string offset",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54888564/

相关文章:

javascript - 我如何使用 $.post() 发送表单数据?

mysql - 如何将值插入到 Node Express 项目中的 Mysql.js 表中

php - while($row = mysql_fetch_assoc($result)) - 如何 foreach $row?

php - 函数 mt_rand 值的最大范围?

javascript - 我想在 jquery 对话框中从数据库获取 id

php - 将自动填充文本字段的内容发送到 php 文件以使用 JQuery 进行处理,并返回结果

php - 从字幕文件中删除 "acceleration"

mysql - 如何计算同一列上具有不同 where 子句的值?

php - 使用 MySQLi 设置字符集

php - 在 Sonata Admin 中添加带有选择的选择到过滤器的最佳方法是什么?