Как использовать метод GROUP BY в php-mysql - PullRequest
0 голосов
/ 01 июня 2019

Я пытаюсь использовать «group by» вместо «DISTINCT» в моем php-файле, чтобы выбрать несколько строк, для которых у всех есть определенное значение столбца, и это «idchat».И я хочу получить более одного столбца, пожалуйста, помогите мне!

Я проверил все страницы, но ничего не понял

 <?php 

$connection = mysqli_connect("localhost","---","pass","---");
    $id = $_GET["id"];
    $mobile = $_GET["mobile"];
    $idchat = $_GET["idchat"];

    if (strpos($mobile, '9') !== false) {

$query = "SELECT DISTINCT a,b,c,d,idchat  FROM database where mobile = '$mobile' ORDER BY id DESC";
$result = mysqli_query($connection,$query);
while ($row = mysqli_fetch_assoc($result)) {

    $array[] = $row;    
}
header('Content-Type:Application/json');
echo json_encode($array);
    }
    mysqli_close($connection);?>

, и этот код дает мне эту ошибку:

Предупреждение: mysqli_fetch_assoc () ожидает, что параметр 1 будет mysqli_result, логическое значение задано в /home/---/test.php в строке 12

Ответы [ 2 ]

0 голосов
/ 01 июня 2019

«Не могли бы вы исправить мои коды, пожалуйста?»: Хорошо, но не проверено:

<?php 

$connection = mysqli_connect("localhost","---","pass","---");
    $id = $_GET["id"];
    $mobile = $_GET["mobile"];
    $idchat = $_GET["idchat"];

    if (strpos($mobile, '9') !== false) {

$query = "SELECT DISTINCT a,b,c,d,idchat,id  FROM `database` where mobile = '$mobile' ORDER BY id DESC";
$result = mysqli_query($connection,$query);
if ($result) {
    while ($row = mysqli_fetch_assoc($result)) {

        $array[] = $row;    
    }
    header('Content-Type:Application/json');
    echo json_encode($array);
}
else {
  echo mysqli_error($connection);
}
mysqli_close($connection);?>
} 

Я также добавил id к запросу из-за комментария от @ Raymond

0 голосов
/ 01 июня 2019

См. Следующий вывод:

mysql> SELECT * FROM database;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'database' at line 1
mysql> SELECT * FROM mytable;;
ERROR 1146 (42S02): Table 'test.mytable' doesn't exist
ERROR:
No query specified

mysql>

Первый запрос не понят, потому что база данных является зарезервированным словом. Вы не должны использовать это, чтобы назвать таблицу. Обходной путь - добавить кавычки вокруг имени:

mysql> SELECT * FROM `database`;
ERROR 1146 (42S02): Table 'test.database' doesn't exist
mysql>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...