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

注意:异常'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 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog