【问题标题】:Error Warning: join(): Invalid arguments passed in PHP错误警告:join():PHP 中传递的参数无效
【发布时间】:2019-03-27 07:58:48
【问题描述】:

请帮忙, 我收到错误“警告:join(): Invalid arguments pass in ... on line ...”。

这是我的代码:

$query = "SELECT `id`, `kategori`, `sub_kategori` FROM `table` ORDER BY `id` DESC"; 

$stmt = $DB_con->prepare($query);

$stmt->execute();   

$kategori = array();

if($stmt->rowCount()>0) {                       
    while($row=$stmt->fetch(PDO::FETCH_ASSOC)){
    $kategori = print($row['kategori']);    
}
}else{
 echo "Nothing here...";                
}

join($kategori, ',');

我期望输出:数据,数据,数据,数据,书籍,书籍 但实际输出是“DataDataDataDataBookBook”和错误“Warning: join(): Invalid arguments pass in ... on line...”

【问题讨论】:

  • 对不起,我还在学习。请指导我

标签: php mysql arrays join pdo


【解决方案1】:

只需在每次迭代中追加 $row['kategori'] 并更改 join()implode() 调用中的参数顺序:

<?php

// Get data
$query = "SELECT `id`, `kategori`, `sub_kategori` FROM `table` ORDER BY `id` DESC"; 
$stmt = $DB_con->prepare($query);
$stmt->execute();   

// Fetch data    
$kategori = array();
if ($stmt->rowCount() > 0) {                       
   while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
       $kategori[] = $row['kategori'];    
   }
} else {
    echo "Nothing here...";                
}

// Output
echo implode(',', $kategori);

?>

【讨论】:

  • 非常感谢您的回复,错误消失了但结果显示仍然是“DataDataDataDataBookBook”,没有任何“,”
  • @thenoirlatte 请检查更新的答案,我已经编辑了一些错误。
  • @thenoirlatte 欢迎您。如果您认为这个或任何其他答案是您问题的最佳解决方案,您可以接受。谢谢。
【解决方案2】:

获取一堆记录然后将它们连接在一起的替代方法是在 mysql 中使用GROUP_CONCAT() 为您完成工作。此外,由于您没有绑定任何内容 - 您可以致电 query()。然后你会从数据库中获得 1 行的内容 - 所以最后一点是说它是否为空,然后将值设置为 Nothing here...(使用 ?: 完成) ...

$query = "SELECT GROUP_CONCAT(`kategori`) as kategori 
             FROM `table` 
             ORDER BY `id` DESC"; 

$stmt = $DB_con->query($query);
$row=$stmt->fetch(PDO::FETCH_ASSOC);
$output = $row['kategori']?:"Nothing here...";
echo $output;

如果您仍然需要单独的数据行,那么另一种选择是使用 PDO::FETCH_COLUMNfetchAll() 返回结果,然后使用 implode() 就像在其他解决方案中一样...

$query = "SELECT `kategori` 
             FROM `table` 
             ORDER BY `id` DESC"; 

$stmt = $DB_con->query($query);
$kategori=$stmt->fetchAll(PDO::FETCH_COLUMN);
echo implode(',', $kategori)?:"Nothing here...";

【讨论】:

  • 谢谢......是的,我同意,但实际上我尝试将结果与一些 html 结合起来,所以......我不知道
  • 添加了一个替代方案,它也提供了一个值数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多