Codeigniter表单验证is_unique似乎是在表名中添加子域名

时间:2017-10-19 18:35:02

标签: php codeigniter

我对这个问题感到困惑。我的代码真的不同,所以我期待不同的结果。但我正在运行表单验证并尝试调用is_unique函数。但似乎它将我的子域添加到查询中的表名。而对于我的生活,我无法弄清楚为什么。

我有一个库类,用于设置它需要的控件

protected function settablecolumnattributes(){
    $this->addcolumnattributes(
        array(
            "name" => "user_login",
            "type" => "VARCHAR",
            "length" => "255",
            "default" => "NULL",
            "collation" => "",
            "attributes" => "",
            "null" => "",
            "index" => "",
            "autoincrement" => "",
            "comments" => "",
            "width" => "",
            "sortable" => "true",
            "control" => array(
                "type" => "textbox",
                "label" => "User Login",
                "id" => "",
                "class" => "",
                "placeholder" => "Enter a Username",
                "validations" => "required|is_unique[blah.user_login]"
            ),
            "visible_on_form" => true,
            "visible_on_table" => true
        )
    );
}

然后我在这里收集所有控制验证并输出它们。

public function set_object_form_validations(){
    $fields = $this->getcolumnattributes();

    foreach( $fields as $field ):
        $visible_on_form = property_exists( $field, "visible_on_form" );
        if( $visible_on_form !== false ):
            if( $field->visible_on_form !== true ):
                continue;
            endif;
        endif;
            $this->CI->form_validation->set_rules($field->name, $field->control['label'], $field->control['validations']);
    endforeach;
}

现在,当验证遇到is_unique时,我收到此错误

Error Number: 1146
Table '12385468.demo_blah' doesn't exist
SELECT * FROM `demo_blah` WHERE `user_login` = 'joe' LIMIT 1
Filename: libraries/Form_validation.php
Line Number: 1125

我正在使用的测试网址就像这样demo.example.com/admin/users/add

我已经进入表单验证文件,并尝试追溯此问题,但它只是越来越深入地进入CI功能。 $table出现的每个位置都会显示blah,但您可以在查询中看到demo_blah。我很困惑。

1 个答案:

答案 0 :(得分:0)

在钻取所有codeigniter函数后计算出来。原来在config.php = $config['dbprefix']内设置了一个数据库前缀。我原以为它是子域名,因为它说的是demo。但前缀也设置为demo。实际上我的设置实际上没有任何问题。