PHP вывод рассчитанного значения SQL

1

Я пытаюсь добавить все значения в одном столбце из таблицы, а затем повторить это значение

$conn = mysqli_connect($servername, $username, $password, $dbname);

// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
            }
$sql = "SELECT sum(paid) as total_paid from users";
$result = $conn->query($sql);
echo $result;

Но я получаю эту ошибку:

Допустимая фатальная ошибка: объект класса mysqli_result не может быть преобразован в строку в

Почему и как я могу исправить?

Теги:

2 ответа

4
Лучший ответ

Это слишком долго для "комментария".

Вы должны перебирает результаты и использовать while цикл, а не повторяющий запрос, поэтому вы получаете настоящую ошибку.

Вам также необходимо убедиться, что тип paid столбца может использоваться для выполнения математических задач, таких как int например (например). Если он varchar, то вам нужно будет отдать его целому числу.

Рекомендации:

Вот процедурный стиль:

$sql = "SELECT sum(paid) as total_paid from users";
$result = $conn->query($sql);

while ($row = mysqli_fetch_array($result)) {
    echo "Sum: " . $row['total_paid'];
}

или как объектно-ориентированный метод:

while($row = $result->fetch_array()) {
        echo $sum = $row['total_paid'];
        }

Примечание:

Чтобы вычислить строку на основе пользователя /id, добавьте предложение WHERE в ваш запрос.

Т.е.: WHERE id='x'

  • 0
    «например, например, int » заставил меня принять двойное мнение. Это имеет смысл, но встречается смешно. Может быть, это только я :)
  • 0
    @Martin int - это лишь один из немногих типов, которые можно использовать для выполнения математических операций в MySQL. Есть несколько других. Хотя я мог бы добавить ссылку на сайт MySQL для различных типов, которые могут выполнять математику.
Показать ещё 4 комментария
4

Это потому, что $result возвращает объект, а не строку. Вы должны пройти через него и повторить результаты. И поскольку это только одна строка (потому что SUM без group by всегда возвращает только одно значение, поэтому только одна строка), вы можете сделать это:

if ($row = $result->fetch_assoc()) {
    echo $row['total_paid'];
} 

Или, fetch_object() используйте fetch_object():

echo $result->fetch_object()->total_paid;
  • 0
    его нит один ряд, его несколько рядов. это один столбец
  • 1
    @Rhillz SUM без group by всегда возвращает одну и только одну строку
Показать ещё 3 комментария

Ещё вопросы

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