Почему запрос не возвращает отображаемое имя, как в phpmyadmin?

0

У меня есть этот код, если я выполняю его в phpmyadmin, он работает хорошо, но когда я пробую его в php, он просто не работает. Возвращает "0 результатов".

SQL:

SET @felhasz := (SELECT user_id FROM 'items_subtitles' GROUP BY user_id ORDER BY SUM(status) DESC LIMIT 1);SELECT displayname FROM 'users' WHERE id=@felhasz;

PHP:

$sql = "SET @felhasz := (SELECT user_id FROM 'items_subtitles' GROUP BY user_id ORDER BY SUM(status) DESC LIMIT 1);SELECT displayname FROM 'users' WHERE id=@felhasz;";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "" . $row["displayname"];
    }
} else {
    echo "0 results";
}
Теги:
phpmyadmin

1 ответ

1

Вы не можете выполнить несколько запросов за один вызов query(). Вместо этого разделите ваш запрос на два вызова, например:

$sql = "SET @felhasz := (SELECT user_id FROM 'items_subtitles' GROUP BY user_id ORDER BY SUM(status) DESC LIMIT 1);";
$conn->query($sql) or die($conn->error);
$sql = "SELECT displayname FROM 'users' WHERE id=@felhasz;";
$result = $conn->query($sql);

Или вы можете просто объединить их в один, заменив переменную во втором запросе значением из первого:

$sql = "SELECT displayname FROM 'users' WHERE id=(SELECT user_id FROM 'items_subtitles' GROUP BY user_id ORDER BY SUM(status) DESC LIMIT 1);";
$result = $conn->query($sql);

Обратите внимание, что вы также можете использовать multi_query() но это усложняет получение результирующего набора из второго запроса (см. Руководство по этому вопросу).

  • 0
    Спасибо! Отлично работает!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню