Строгая ошибка стандартов - передача по ссылке

0

Я продолжаю получать эту ошибку:

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 и ввести фрагмент кода, чтобы игнорировать эти ошибки, но безрезультатно, я, возможно, сделал это, потому что я довольно новичок в этом.

Если кто-то может показать мне, как строго доказать это, это было бы потрясающе! заранее спасибо

Теги:
strict

1 ответ

1

Я предполагаю, что функция 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
  • 0
    Или перенос с круглыми скобками ($this->auth->getInformation("id"))

Ещё вопросы

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