【问题标题】:PHP - bind_param throwing the warning for INSERT prepare statementPHP - bind_param 为 INSERT 准备语句抛出警告
【发布时间】:2014-12-13 12:55:51
【问题描述】:

当我尝试插入低于 sn-p 的行时,它会针对 $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;
}

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

【问题讨论】:

标签: php


【解决方案1】:

问题在于bind_param变量绑定到准备好的语句(它们的值将在语句发送到数据库时被提取),并且您尝试传递一个$user_info_do->get_first_name() 的结果)。这就是你得到错误的原因:值不能通过引用传递。

将您的代码更改为...

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 逐字复制答案不是一个好习惯。如果这个客人是重复的,只需要求关闭它。
    • 我添加了指向原始答案的链接。所以它根本不是副本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多