PHP - bind_param抛出 INSERT 准备语句的警告


PHP - bind_param throwing the warning for INSERT prepare statement

当我尝试使用以下代码片段插入行时,它会为 $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;
}

请帮助我这里的原因是什么。

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

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

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

$query_stmt->bind_param要求所有参数都通过引用传递,因此您不能直接传递函数的返回值(也就是说,不先将其分配给变量(。

mysqli : 严格的标准:只有变量应该通过引用传递