dpqaaczn141761 2014-08-02 16:00
浏览 292
已采纳

注意:异常'PDOException',消息'SQLSTATE [HY093]:参数号无效:参数未定义'

Okay, I'm really confused. I can't seem to see where I went wrong with this invalid parameter number thing. Could I get a hand with identifying where I'm going wrong?

Get SQL Query and Set up Parameters

public function do_retrieve_stored_message_data()
    {
        $m_sql_query_string = CourseWorkSqlQuery::get_message_data();
        $m_message_data = $this->c_arr_display_stored_message_data['sanitised-message-data'];
        $m_arr_sql_query_parameters = 
        array(':message_date' => $m_message_data,
                ':message_time' => $m_message_data,
                ':message_last_value' => $m_message_data);

        $m_result = $this->c_obj_database_handle->safe_query($m_sql_query_string, $m_arr_sql_query_parameters);

SQL Query String

public static function get_message_data()
    {
        $m_sql_query_string  =  "SELECT message_date, message_time, message_last_value ";
        $m_sql_query_string .=  "FROM cw_messages ";
        $m_sql_query_string .=  "WHERE message_date = :message_date ";
        $m_sql_query_string .=  "AND message_time = :message_time ";
        $m_sql_query_string .=  "AND message_last_value= :message_last_value ";
        $m_sql_query_string .=  "LIMIT 1";
        return $m_sql_query_string;
    }

Database Handler

public function safe_query($p_query_string, $p_arr_params)
    {
        $m_database_query_execute_error = true;
        $m_query_string = $p_query_string;
        $m_arr_query_parameters = $p_arr_params;

        try
        {
            $m_temp = array();
            $this->c_obj_database_handle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

            $this->c_obj_stmt = $this->c_obj_database_handle->prepare($m_query_string);

            // bind the parameters
            if (sizeof($m_arr_query_parameters) > 0)
            {
                foreach ($m_arr_query_parameters as $m_param_key => $m_param_value)
                {
                    $m_temp[$m_param_key] = $m_param_value;
                    $this->c_obj_stmt->bindParam($m_param_key, $m_temp[$m_param_key], PDO::PARAM_STR);
                }
            }

            // execute the query
            $m_execute_result = $this->c_obj_stmt->execute();

Any help would be greatly appreciated.

  • 写回答

1条回答 默认 最新

  • dougai6464 2014-08-03 11:17
    关注

    RESOLVED:

    Long story, short, I tried to assign all 3 parameters to 1 variable. So to change this, I swapped:

    OLD CODE

    ..
    ..
    $m_arr_sql_query_parameters = 
        array(':message_date' => $m_message_data,
                ':message_time' => $m_message_data,
                ':message_last_value' => $m_message_data);
    ..
    ..
    

    NEW CODE

    ..
    ..
    $m_arr_sql_query_parameters = 
        array(':message_date' => $m_message_date,
                ':message_time' => $m_message_time,
                ':message_last_value' => $m_message_last_value);
    ..
    ..
    

    And this fixed my problem. Good to know you can't assign more than one paranter to a variable. Feel free to close this Query.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 MATLAB动图的问题
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名