PHP - bind_param抛出INSERT prepare语句的警告

时间:2014-12-13 12:55:52

标签: php

当我尝试在下面的代码段中插入行时,它会为 $ user_info_do-> get_first_name()抛出严格的标准警告,其中user_info_do是具有成员变量first_name的类。

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;
}

请帮助我,这可能是什么原因。

2 个答案:

答案 0 :(得分:1)

问题是bind_param变量绑定到预准备语句(当语句发送到DB时将提取它们的值),并且您尝试传递值< / em>($user_info_do->get_first_name()的结果)。这就是您收到错误的原因:无法通过引用传递值。

将您的代码更改为......

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

答案 1 :(得分:0)

$query_stmt->bind_param要求所有参数都通过引用传递,因此您无法直接传递函数的返回值(而不是首先将其赋值给变量,即)。

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