Предупреждение об ошибке: join (): в PHP переданы неверные аргументы - PullRequest
0 голосов
/ 27 марта 2019

Пожалуйста, помогите, я получил сообщение об ошибке «Предупреждение: join (): неверные аргументы переданы в ... 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» и ошибка «Предупреждение: присоединиться(): Неверные аргументы переданы ... в строке ... "

Ответы [ 2 ]

3 голосов
/ 27 марта 2019

Просто добавьте $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);

?>
1 голос
/ 27 марта 2019

В качестве альтернативы извлечению нескольких записей и их последующему соединению можно использовать GROUP_CONCAT() в mysql, чтобы выполнить работу за вас.Кроме того, поскольку вы ничего не связываете - вы можете просто позвонить 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_COLUMN и fetchAll() для возврата результатов, а затем 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...";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...