表单验证库似乎只适用于POST.我需要使用查询字符串,并希望使用CI来验证传递的值.有没有办法做到这一点?
当我尝试从我的数据库中检索数据到表时,我收到此错误:
DataTables warning (table id = 'student_table'): Requested unknown
parameter '1' from the data source for row 0
Run Code Online (Sandbox Code Playgroud)
下面是我使用的javascript
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
$('#student_table').dataTable( {
"bProcessing": true,
"bServerSide": true,
"sServerMethod": "POST",
"sAjaxSource": "<?php echo base_url()?>index.php/data/all"
} );
} );
</script>
Run Code Online (Sandbox Code Playgroud)
检索到的JSON数据:
{"sEcho":0,"iTotalRecords":3,
"iTotalDisplayRecords":3,
"aaData":[["85","t1","1D"],["74","test475","4A"],
["777","maiz","5"]],"sColumns":"id,name,class"}
Run Code Online (Sandbox Code Playgroud)
以下是我的表格:
<table class="datatable tables" id="student_table">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Class</th>
</tr>
</thead>
<tbody>
<tr>
<td class="dataTables_empty">Loading data from server</td>
</tr>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
PHP代码(点燃数据表)
$this->load->library('datatables');
$this->datatables->select('admission,name,class');
$this->datatables->from('students');
echo $this->datatables->generate();
Run Code Online (Sandbox Code Playgroud)
我正在使用codeigniter和DataTables.
为什么我会收到该错误以及如何将数据检索到表中?
我想加入表格列出两类小说和浪漫的书籍.如何使用WHERE IN子句进行JOIN(甚至可能?抱歉,noob在这里)
这是我被困在的地方:
$categories = array(10,12);
$query = select()->from('books');
$query->join('genre_map','genre_map.gid IN ('.implode(",", $categories).')');
Run Code Online (Sandbox Code Playgroud)
Jn Table genre_map:bookid,genre_id
任何SQL Query/CodeIgniter帮助都将非常感激.
我是CI的新手,我只想知道有没有办法在CI中切换数据库,例如:在登录页面中,有一个下拉列表,您可以指定要连接的数据库,查看如下所示
<select name="select" id="select" >
<option value="1">DB1</option>
<option value="2">DB2</option>
</select>
Run Code Online (Sandbox Code Playgroud)
我在database.php中有2个数据库,default另一个是local
默认情况下我使用的是默认数据库.
$active_group = 'default';
$active_record = TRUE;
我的问题是如何根据下拉值指定db,如果我选择DB1,连接到默认值,DB2转到本地....我知道如何通过以下方式手动切换db:
$this->load->database('default', TRUE); OR
$this->load->database('local', TRUE);
Run Code Online (Sandbox Code Playgroud)
由于我有不同的控制器和模型,我怎么能实现这一点...我尝试过:首先在登录功能中获取dropdownlist的值:
$this->load->model('My_Model');
$db = $this->input->post('select')
$this->My_Model->getDB($db);
Run Code Online (Sandbox Code Playgroud)
然后在我的模型中我得到了功能:
function getDB($db)
{
if($db ==1)
{
$this->db = $this->load->database('default', TRUE);
}
elseif($db ==2)
{
$this->db = $this->load->database('local', TRUE);
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,它不起作用.....任何帮助都会得到很多赞赏!!!!
如何执行
ALTER TABLE tblname AUTO_INCREMENT = 123
Run Code Online (Sandbox Code Playgroud)
作为codeigniter活动记录查询?
在codeigniter中有一个名为dbforge-> modify_column()的东西,我是否必须使用它,如果是这样的话?
我按照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)
为了只针对这两个类,但这似乎不起作用.我可能做错了什么想法?
我和一位朋友刚刚开始参与一个项目,其他人几年前就停止了开发,我们正试图复活它.我们已经解决了大多数与设置相关的问题,但是我们无法弄清楚这是一个非常烦人的问题.
在我们的本地主机中,所有页面都需要很多时间来加载/刷新.我不是指资产,脚本或任何东西,问题是在第一个请求完成之前的延迟.大多数情况下需要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) 我想从 S3 提供我的静态/媒体内容(现在是图像),但我的 url 应该是现在的样子。例如:
http://example.com/resources/img/me.jpg 是我当前的图像 url 之一,它现在由本机服务器提供(EBS 存储随 EC2 一起提供)。现在我想将这个 me.jpg 文件存储在一个 s3 存储桶中,然后如果有人输入上面的 url,它就会从那里带来。
我知道这可以通过创建一个存储桶名称作为 example.com 和 www.example.com,然后为s3-website-region.amazonaws.com配置 Route 53 CNAME(别名)
但是当我输入http://example.com/blog/cool-stuff-blog时会发生什么?这不适用于静态/媒体内容!它需要执行服务器端代码(Python/PHP)。
但是使用我当前工作域的上述配置会发生什么?它不会尝试从 S3 提供一些内容并失败吗?
我怎样才能完成它?请不要说有一个像 static.example.com 这样的子域,并为所有静态文件请求提供服务。对我来说,这现在是不可接受的。我想使用完全相同的域名。
我无法将表单内容发送到电子邮件。我收到以下错误:
: Warning
Message: fsockopen(): php_network_getaddresses: getaddrinfo failed:Name or service not known
Filename: libraries/Email.php
Line Number: 1986
Severity: Warning
Message: fsockopen(): unable to connect to ssl://smtp.123mailsetup.com:25 (php_network_getaddresses: getaddrinfo failed: Name or service not known)
Filename: libraries/Email.php
Line Number: 1986
Run Code Online (Sandbox Code Playgroud)
我的1986年路线是
$this->smtp_timeout);
Run Code Online (Sandbox Code Playgroud)
我的控制器中的部分代码
$config = Array(
'protocol' => 'smtp',
'smtp_host' => 'smtp.xxxx.com',
'smtp_port' => 465,
'smtp_user' => 'xxxxx@xxx.com',
'smtp_pass' => 'xxxxxxxx',
'mailtype' => 'html',
'charset' => 'iso-8859-1'
);
$this->load->library('email', $config);
$this->email->from('xxxxx@xxx.com', 'Mailsetup');
$this->email->to($email);
$this->email->subject('Domain transfer');
$this->email->message( '<html><body>Domain to be transfered '.$domain.' …Run Code Online (Sandbox Code Playgroud) 我尝试运行 Flysystem 的适配器基本示例代码Local,但出现Class 'League\Flysystem\Adapter\Local' not found错误。这是我的过程:
版本检查:
php -v
PHP 5.5.9-1ubuntu4.23 (cli) (built: Feb 8 2018 21:59:47)
Run Code Online (Sandbox Code Playgroud)
安装飞行系统:
composer require league/flysystem
Run Code Online (Sandbox Code Playgroud)
输出显示我是最新的(这是我第二次运行它):
Using version ^1.0 for league/flysystem
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files
Run Code Online (Sandbox Code Playgroud)
现在网络根目录中有一个vendor文件夹。其中./web/vendor/league/flysystem/src/Adapter$有这些文件:
AbstractAdapter.php
AbstractFtpAdapter.php
CanOverwriteFiles.php
Ftpd.php
Ftp.php
Local.php
NullAdapter.php
Polyfill/
SynologyFtp.php
Run Code Online (Sandbox Code Playgroud)
...只是表明它似乎安装正确(?)我在我的 Web 根目录中创建一个测试文件和一个测试目录:
fly-local.php我将他们的文档中的文本粘贴到其中( https://flysystem.thephpleague.com/docs/adapter/local/):
<?php
use League\Flysystem\Filesystem;
use …Run Code Online (Sandbox Code Playgroud) codeigniter-2 ×10
php ×7
codeigniter ×6
amazon-ec2 ×1
amazon-s3 ×1
apache ×1
autoload ×1
database ×1
flysystem ×1
mamp ×1
mysql ×1