标签: codeigniter

禁用事务的重点是什么(在ActiveRecord CodeIgniter中)?

禁用交易有什么意义? http://ellislab.com/codeigniter/user-guide/database/transactions.html

$this->db->trans_off()
Run Code Online (Sandbox Code Playgroud)

我看不出用法.是用于测试目的吗?

"当禁用事务时,您的查询将自动提交,就像在没有事务的情况下运行查询时一样."

我有一个表user,其中存在一个列nameOfUser.nameOfUser2-列不不存在.

TEST1 此代码将尝试使用正常事务执行2次插入:

$this->db->trans_start();
$this->db->insert('user', array('nameOfUser' => 'testCVVCOOL'));
$this->db->insert('user', array('nameOfUser2' => 'test2'));
$this->db->trans_complete();    
Run Code Online (Sandbox Code Playgroud)

但它被回滚(没有插入任何内容),因为nameOfUser2第二个插入中不存在列列.

TEST2 此代码将尝试在禁用事务的情况下执行2次插入

$this->db->trans_off();
$this->db->trans_start();
$this->db->insert('user', array('nameOfUser' => 'testCVVCOOL'));
$this->db->insert('user', array('nameOfUser2' => 'test2'));
$this->db->trans_complete();    
Run Code Online (Sandbox Code Playgroud)

上面会将testCVVCOOL字符串插入-table,user即使第二个插入中有错误($this->db->insert('user', array('nameOfUser2' => 'test2'));)

您何时需要以这种方式禁用交易?

activerecord transactions codeigniter

5
推荐指数
1
解决办法
598
查看次数

CodeIgniter自动加载特定的类

我按照Phil的Sturgeon 示例创建了两个控制器,Public_Controller和./application/libraries文件夹中的Admin_Controller .

我想要做的是特定地自动加载Public_Controller和Admin_Controller,所以我在./application/config.php中创建了这个自动加载功能.

function __autoload($class) {

    // Autoload only Public_Controller and Admin_Controller
    if (strpos($class, 'CI_') !== 0) {
        $file = APPPATH . 'libraries/'. $class .'.php';
        if ( file_exists($file) && is_file($file) ) {
            @include_once($file);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为这个问题是我有更多的文件包含在库文件夹中,所以那些也是自动加载的,这不是我想要的.所以我尝试对第一个if语句进行一些小改动,如下所示:

if ( in_array($class, array('Public_Controller, Admin_Controller')) ) // instead of strpos
Run Code Online (Sandbox Code Playgroud)

为了只针对这两个类,但这似乎不起作用.我可能做错了什么想法?

php codeigniter autoload codeigniter-2

5
推荐指数
2
解决办法
1万
查看次数

在codeigniter php中根据性别显示不同的前缀

$all_categories = get_cats($cat);
echo "&nbsp&nbsp"."Sons";

for ($i=0;$i<sizeof($all_categories);$i++) {     
    $arr = get_gender($cat);

    if ($arr[$i]=='0') {
        echo "&nbsp&nbsp".$all_categories[$i].",";
    }  
} 

echo "&nbsp&nbsp"."Daughters";

for ($i=0;$i<sizeof($all_categories);$i++) {     
    $arr = get_gender($cat);

    if ($arr[$i]=='1') {
        echo "&nbsp&nbsp".$all_categories[$i].",";
    }
} 
Run Code Online (Sandbox Code Playgroud)

在$all_categories我得到一个给定身份的所有孩子,get_cats并且get_gender是功能.

0适合男性,1适合女性.我想首先显示"儿子"这个词然后再显示他们的名字,然后再计算儿子的数量,然后再写上"女儿"及其名字和女儿的数量.

现在我正在显示"儿子"这个词然后他们的名字,然后是"女儿"和他们的名字,但"儿子"和"女儿"这两个词正在显示,即使给定的身份证没有孩子.

php mysql codeigniter

5
推荐指数
1
解决办法
189
查看次数

在杂货CRUD(CodeIgniter)中依赖下拉

我在使用Drop Downs时遇到了一个问题.我试图使用这个 http://www.grocerycrud.com/forums/topic/1087-updated-24112012-dependent-dropdown-library/

但实际上我的要求是完全不同的.我有一个表fwld_products,其中我正在添加所有其他表的类别

fwld_cat_main(主要类别的ID),

fwld_cat_sub1(sub1类别的id)

fwld_cat_sub2(sub2类别的id)

fwld_cat_sub3(sub3类别的id)

我希望以这种方式显示下拉,当用户选择主类别时,下拉显示(sub1)具有与主类别相关的数据,当选择sub1时下拉显示(sub2)显示与sub1相关的数据,并且sub2选择并删除down(sub3)显示与下拉(sub2)相关的数据.

当提交Finnally数据时插入[fwld_products].

这里我附上了ERD,结果也是如此.

在此输入图像描述 在此输入图像描述

请帮忙

php mysql codeigniter grocery-crud drop-down-menu

5
推荐指数
1
解决办法
6944
查看次数

CodeIgniter项目的第一个HTTP请求的延迟非常高

我和一位朋友刚刚开始参与一个项目,其他人几年前就停止了开发,我们正试图复活它.我们已经解决了大多数与设置相关的问题,但是我们无法弄清楚这是一个非常烦人的问题.

在我们的本地主机中,所有页面都需要很多时间来加载/刷新.我不是指资产,脚本或任何东西,问题是在第一个请求完成之前的延迟.大多数情况下需要15到30秒,这是不可接受的,有时甚至会达到1或2分钟.

例如,这是Chrome开发工具中"网络"标签的屏幕截图.第一行是视图,其他是资产.

疯狂延迟的示例


我们用谷歌搜索了几个小时,尝试了一些不同的东西,但没有一个有效.像这样的一些解决方案指向一些Apache的httpd.conf设置,但我放弃了,因为我使用相同的服务器用于其他项目,这从未发生过(无论如何我试过了,但是没有用).其他人指出PHP版本冲突,所以我尝试将我的MAMP中的PHP从5.4.10更改为5.2.17(该项目需要5.2.3+),但这似乎也不起作用.

除了我的MAMP安装,我们还在带有WAMP(PHP5.5)的Windows机器上测试了它,并且在另一台带有干净MAMP(PHP5.5)的Mac上进行了测试,在这两种环境中都会发生同样的事情.所以,我们现在想知道问题是否可能出现在CodeIgniter本身(这听起来不太可能)或某些项目配置中,但我们对CodeIgniter(也不是PHP专家)都是新手,并且找不到任何东西.

哦,我们也尝试联系原始的开发人员,但是他们说这是两年前,听起来他们不愿意提供帮助.我真的希望他们在开发这个项目的时候没有这个问题,因为在30秒的加载时间内工作它只是疯了.

有人有任何想法或了解我们可以尝试找到问题的更多内容吗?如果需要,我可以发布一些代码.



更新:我刚刚发现这个未解决的问题,其中用户遇到了与Laravel类似的问题,但有时只是.正如我所说,在我的情况下,这种情况总是发生,延迟时间从大约10秒到几分钟.



更新2:正如Wrikken所建议的,我通过xdebug探查器运行它,但我不确定如何解释结果以查看问题所在.我用PHPStorm的"Analyze Xdebug Profiler"工具打开了一个快照,并按照每个调用中使用的时间对其进行了排序.以下是一些截图:

执行统计选项卡 调用树选项卡

并按自己的时间排序:

按自己的时间排序

这CashewModel显示一些排队是某种自定义库由以前的开发者,这也是造成我们已经解决了一些问题建.我希望问题不会隐藏在那里,因为我不知道大多数自定义代码是如何工作的.

有任何想法吗?同样,我可以根据需要发布代码.



更新3:深入研究代码,MY_Controller在上面的屏幕截图中,以前的开发人员创建了一些扩展的自定义控制器CI_Controller.我刚刚发现他们将所有腰果代码推送到GitHub,这是MY_Controller文件.

我还会在这里粘贴第467行的所有相关代码(在GitHub的版本中是464),它涉及_remap内部的功能,CashewController并且是探查器说所有时间花费的地方.我将一些评论和名称翻译成英文.

/**
 *
 * Extension of the default controller, adding support for templates
 * 
 * Usage example:
 *
 * class Dummy extends EC_Controller
 * {
 *     public function index()
 *     {
 *         $this->add_section('id_in_template', 'page_name');
 *         $this->render_page(); // Renders the default …
Run Code Online (Sandbox Code Playgroud)

php apache mamp codeigniter codeigniter-2

5
推荐指数
1
解决办法
692
查看次数

如何从Fast-cgi中的codeigniter中删除index.php

在Code_gniter的Fast-cgi环境中遇到mod_rewrite问题.我的.htaccess看起来像这样:

    DirectoryIndex index.php
    RewriteEngine on
    RewriteCond $1 !^(index\\.php|images|css|js|robots\\.txt|favicon\\.ico)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php?$1 [L] 
Run Code Online (Sandbox Code Playgroud)

但我得到一个错误'没有指定输入文件'.

我换了

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.* - [L]

RewriteCond $1 !^(index\.php|images|robots\.txt)
#RewriteRule ^(.*)$ /index.php?/$1 [QSA,L]

<IfModule mod_php5.c>
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

<IfModule !mod_php5.c>
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)

它也适用于这个:

#RewriteRule ^(.*)$ /index.php?/$1 [QSA,L]
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果我从$ config ['index_page'] ='index.php'更改配置文件application/config/config.php,我仍然在URL上有index.php; to $ config ['index_page'] =''; 我有一个不同的错误.

我做错了什么?

.htaccess codeigniter fastcgi

5
推荐指数
1
解决办法
1134
查看次数

在通过PECL安装后,OA不被PHP接收

我需要将Oauth设置为我将要开发的PHP项目的一部分.

为此,我跑了;

sudo pecl install oauth
Run Code Online (Sandbox Code Playgroud)

这完成了OK,它指示我添加extension=oauth.so到我的php.ini文件中,我做了.

然后我重新启动Apache并运行

php -i | grep oauth
Run Code Online (Sandbox Code Playgroud)

要查看它是否被PHP拾取,它似乎就像我得到的结果一样;

source version => $Id: oauth.c 325799 2012-05-24 21:07:51Z jawed $
Run Code Online (Sandbox Code Playgroud)

但是当我运行(CodeIgniter)应用程序时,我得到错误;

Fatal error: Class 'Oauth' not found in...
Run Code Online (Sandbox Code Playgroud)

我错过了一个至关重要的步骤吗?

php codeigniter oauth pecl

5
推荐指数
1
解决办法
529
查看次数

CodeIgniter insert_batch()

好吧,我试图弄清楚如何使用insert_batch

我正在尝试这样的事情

function checkboxes($data,$category)
    {

        $insert=array(
                        'story'=>$data
                        'category'=>$category
                     );

        $this->db->insert_batch('stories_to_categories',$insert);
    }
Run Code Online (Sandbox Code Playgroud)

对于$ data我有数组,可以有值和键的范围

(
    [0] => 1
    [1] => 6
    [2] => 14
    [3] => 15
    [4] => 18
)
Run Code Online (Sandbox Code Playgroud)

对于类别,我将只有一个值,例如2

我尝试达到我的习惯

  story category
------------------------
    1        2
    6        2
    14       2
    15       2
    18       2
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我,我很痛苦!

php codeigniter

5
推荐指数
1
解决办法
3万
查看次数

如何在codeigniter中使用ajax上传图像?

我正在尝试使用jQuery和ajax函数上传图像,如何获取图像文件的所有细节,就像我们使用的php一样 $_FILE()

这是我的代码

JS

$("#uploadimg" ).click(function() {
     $( "#file" ).click();
});

$( "#file" ).change(function(e) {
    var file=$('#file').val();
    alert(file);
    die();
    e.preventDefault();
    $.ajax({
        url:'http://localhost/JSG/blog/uploadimg',
        secureuri:false,
        type: "POST",
        fileElementId:'image',
        dataType: 'text',
        data:{ file: file },
        cache: true,
        success: function (data){
            alert(data);
            console.log(data);
        },
    });
});
Run Code Online (Sandbox Code Playgroud)

调节器

public function uploadimg()
{
    $var = $_POST['file'];
    print_r($var);
    if($this->input->post('file')) {
        $config['upload_path'] = 'upload'; 
        $config['file_name'] = $var;
        $config['overwrite'] = 'TRUE';
        $config["allowed_types"] = 'jpg|jpeg|png|gif';
        $config["max_size"] = '1024';
        $config["max_width"] = '400';
        $config["max_height"] = '400';
        $this->load->library('upload', $config);

        if(!$this->upload->do_upload()) {
            $this->data['error'] = …
Run Code Online (Sandbox Code Playgroud)

php ajax jquery codeigniter

5
推荐指数
1
解决办法
3万
查看次数

编码函数的codeigniter中的is_unique

我有要求,我可以在新的添加功能中进行唯一值的验证

$this->form_validation->set_rules('email','Email','required|valid_email||is_unique[users.Email]');
Run Code Online (Sandbox Code Playgroud)

它的工作,但在编辑功能,它不工作..我有写回调函数来检查唯一的电子邮件.这是我在编辑功能中编写的代码

$this->form_validation->set_rules('email','Email','required|valid_email|callback_check_email');

function check_username($email)
    { 
        $return_value = $this->user_model->check_email($email);
        if ($return_value)
        {
            $this->form_validation->set_message('email_check', 'Sorry, This username is already used by another user please select another one');
            return FALSE;
        }
        else
        {
        return TRUE;
        }
    }
Run Code Online (Sandbox Code Playgroud)

和user_model

function check_mail($email)
    { 
        $sql = "SELECT users.Email
                FROM users
                WHERE 
                $email = users.Email
                ";

        $result = $this->db->query($sql)->result_array();
        return $result;

    }
Run Code Online (Sandbox Code Playgroud)

我无法验证唯一的电子邮件

php sql codeigniter

5
推荐指数
2
解决办法
2万
查看次数