2014-12-13 105 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-被引用通过) – raina77ow 2014-12-13 13:08:56

回答

1

的问题是,bind_param结合变量到准备好的语句(当语句发送到DB它们的值将被提取),并尝试将(的$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 2014-12-13 13:08:23

+0

我已经添加了原始答案的链接。所以它不是一个副本。 – fortune 2014-12-13 13:09:23