2014-12-13 99 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