Я продолжаю получать эту ошибку:
Strict Standards: "Only variables should be passed by reference in
/home/mydirectory/public_html/myfolder/modules/checkout/controllers/myfile.php
on line 65"
Это код в строке 65:
$stmt->bind_param(
"iissds",
$this->auth->getInformation("id"),
$_POST["method"],
$transaction_id,
$Method->getTransactionID(),
$total_price,
serialize($_POST));
Я попытался отредактировать свой php.ini и ввести фрагмент кода, чтобы игнорировать эти ошибки, но безрезультатно, я, возможно, сделал это, потому что я довольно новичок в этом.
Если кто-то может показать мне, как строго доказать это, это было бы потрясающе! заранее спасибо
Я предполагаю, что функция bind_param
вы вызываете, является mysqli bind_param.
Если мы посмотрим на определение для этой функции, мы увидим, что переменные передаются по ссылке:
bool mysqli_stmt::bind_param ( string $types , mixed &$var1 [, mixed &$... ] )
(Символ &
указывает по ссылке.)
Теперь посмотрим на ошибку, которую вы получаете:
Only variables should be passed by reference
Проблема в том, что вы передаете результаты вызовов функций непосредственно в bind_param
, когда только переменные должны передаваться по ссылке.
Чтобы обойти это все, что вам нужно сделать, это присвоить эти значения переменным и передать их функции, например:
$id = $this->auth->getInformation("id");
...
$stmt->bind_param('iissds', $id, ...
Для получения дополнительной информации о ссылках посмотрите статью php.net "Что нужно делать":
http://php.net/manual/en/language.references.whatdo.php
Ошибки Hididng
В вашем вопросе вы упомянули о сокрытии этих сообщений. Всегда лучше исправлять проблемы с кодом, чем подавлять предупреждения.
Чтобы настроить, какие ошибки отображаются, взгляните на функцию PHP error_reporting
.
Если вы хотите показать все, кроме строгих, вы можете сделать:
error_reporting(E_ALL ^ E_STRICT);
Это также можно установить в файле конфигурации php.ini:
error_reporting = E_ALL ^ E_STRICT
($this->auth->getInformation("id"))