2014-12-13 2 views
0

Когда я пытаюсь вставить строку с нижеприведенным фрагментом, она бросает строковое стандартное предупреждение для $ user_info_do-> get_first_name() где user_info_do - это класс с переменной члена first_name.PHP - bind_param бросает предупреждение для инструкции инструкции INSERT

ERROR: Strict standards: Only variables should be passed by reference

$query = "INSERT INTO user_info (first_name) VALUES (?);"; 

if(!($query_stmt = $this->m_db_connection->prepare($query))) {   
    return; 
} 

if(!$query_stmt->bind_param("s", $user_info_do->get_first_name()) { 
    return; 
} 

Пожалуйста, помогите мне, что может быть причиной здесь.

+0

возможно дубликат [MySQLi: Строгие стандарты: только переменные должны быть переданы по ссылке] (http://stackoverflow.com/questions/23843383/mysqli-strict-standards-only-variables-should- be-pass-by-reference) – raina77ow

ответ

1

Проблема заключается в том, что bind_param связывает переменные к подготовленному отчетности (их значения будут извлечены, когда заявления направляются в БД), и вы пытаетесь передать значение (результат $user_info_do->get_first_name()) в него. Вот почему вы получаете ошибку: значения не могут передаваться по ссылке.

Измените свой код во что-то вроде ...

$firstName = $user_info_do->get_first_name(); 
if(!$query_stmt->bind_param("s", $firstName)) { 
    return; 
} 
0

$query_stmt->bind_param требует, чтобы все Params быть переданы по ссылке, так что вы не можете передать возвращаемое значение функции напрямую (без присвоения его переменной первой, что является).

mysqli : Strict Standards: Only variables should be passed by reference

+0

Это не очень хорошая практика, копируя ответ «слово-ко-слово». Если это приглашение является дубликатом, просто попросите его закрыть. – raina77ow

+0

Я добавил ссылку на исходный ответ. Так что это не копия вообще. – fortune