#php #mysql
#php #mysql
Вопрос:
Следующий код дает мне следующее:
$getexpenses = "SELECT sum(expense_amount) FROM projects_expense WHERE project_id=$project_id";
$showexpenses = @mysqli_query ($dbc, $getexpenses); // Run the query.
echo ' . $showexpenses . ';
Выдает мне результат
' . $showexpenses . '
вместо фактической суммы…
Я уверен, что это что-то простое, чего мне не хватает… Спасибо!
Комментарии:
1. кстати, повторение результата
mysqli_query()
будет не очень полезным. Вам нужно относиться к этому с чем-то вродеmysqli_fetch_assoc()
;2. Хорошо — я понимаю, что такое одинарные / двойные кавычки… но ни то, ни другое не работает? Одинарные кавычки ничего не выводят, а двойные кавычки выводятся. .
3. Вам нужно прочитать мой комментарий…
4. Извините, я не видел, что вы оставили комментарий. Я попытался просто заменить _query на _fetch_assoc, но это не сработало
5. @user517593 Ваша проблема теперь исправлена?
Ответ №1:
echo " . $showexpenses . "
будет работать для вас. Вам нужны двойные кавычки, а не одинарные.
Ответ №2:
Я добавил вызов mysqli_fetch_assoc($showexpenses)
, чтобы сделать его полностью функциональным. Я также провел дезинфекцию $project_id
, чтобы избежать инъекций, и использовал псевдоним, чтобы сделать сумму доступной через ассоциативный массив.
$getexpenses = "SELECT SUM(`expense_amount`) as `sum_amount` FROM `projects_expense` WHERE `project_id`= ".intval($project_id);
$showexpenses = mysqli_query ($dbc, $getexpenses);
$sums = mysqli_fetch_assoc($showexpenses);
$sum = $sums['sum_amount'];
echo $sum;
Мы также могли бы использовать mysqli_fetch_row
вот так:
$getexpenses = "SELECT SUM(`expense_amount`) FROM `projects_expense` WHERE `project_id`= ".intval($project_id);
$showexpenses = mysqli_query ($dbc, $getexpenses);
$sums = mysqli_fetch_row($showexpenses);
$sum = $sums[0];
echo $sum;
Псевдоним больше не нужен, поскольку мы знаем, что первый столбец (0) совпадает.
ПРИМЕЧАНИЕ: вам, вероятно, также необходимо GROUP BY project_id
, если вы хотите использовать SUM()
Ответ №3:
используйте
echo $showexpenses;
или
echo "My query is: {$showexpenses}";
Ответ №4:
В дополнение к ответу Nik, PHP обрабатывает строки по-разному в зависимости от того, используете ли вы одинарные или двойные кавычки вокруг них.
Одинарные кавычки интерпретируют текст как буквальный текст, за исключением ‘», который выводил бы одинарную кавычку, и », который выводил бы косую черту. По этой причине использование одинарных кавычек приведет к выводу имени вашей переменной вместо значения.
Примеры:
CODE | OUTPUT
----------------- ------------------
echo 't'; | t
echo 'r'; | r
echo '$foo'; | $foo
Двойные кавычки интерпретируют определенные escape-последовательности для специальных символов, а также интерпретируют переменные. Например, «n» завершает перевод строки, а » r» выводит возврат каретки. По этой причине при повторении «$myvariable» выводится значение вместо имени переменной.
Примеры:
CODE | OUTPUT
----------------- ------------------
echo "t"; | {tab space}
echo "r"; | {carriage return}
echo "$foo"; | bar
Подробнее:http://www.php.net/manual/en/language.types.string.php