我有一个php的网站,它与solr索引服务器一起使用,基于CodeIgniter.
我们获得了很多新内容,因此我们刷新了数据库,并且必须重新索引内容(大约168,000个元素).我创建了一个脚本,通过500个切片对内容进行索引 - 当脚本完成时,我们启动下一个索引.
它在我的本地测试环境中完美运行,但在生产中我得到这500个错误:
[Thu Dec 02 ...] [error] [client IP] Premature end of script headers: index.php
Run Code Online (Sandbox Code Playgroud)
我的php.log中没有任何内容,只有返回它的apache error_log.我已经看到它发生在网站的其他页面上一两次,但它是在这个索引期间.
有任何想法吗?
我正在尝试制作更新表单,即检索所选特定ID的数据,并填写表单,以便可以进行更新.
当我单击特定条目(我的情况下是产品)上的编辑时,它会转到edit_product_view,但是我在表单元素中使用的每个变量都会声明错误"试图获取非对象的属性"set_values.
使用print_r,我得到正确的关联数组,所以它正确传递.
这是我的摘录edit_product_view.
<h2><?php echo $heading; ?></h2>
<hr>
<table id="newproduct">
<?php echo form_open('products/edit/'.$product->id); ?>
<tr>
<td class="label"><?php echo form_label('Name:');?></td>
<td><?php echo form_input('prodname', set_value('prodname', $product->prodname));?></td>
</tr>
<tr>
<td class="label"><?php echo form_label('Product Type:');?></td>
<td><?php echo form_dropdown('ptname_fk', $product_types, set_value('ptname_fk', $product->ptname_fk));?></td>
</tr>
Run Code Online (Sandbox Code Playgroud)
$product 是包含所有键值对的数组,但由于某种原因我无法填写表单.
先感谢您!
以前我的所有查询都在CI 2.0版中正常运行,但是当我升级到2.0.3时,我的一些SELECT查询被破坏了.
CI会自动添加反引号(``),但在旧版本中它会按原样运行.
CI用户手册已指示添加第二个参数
DB->选择
如
假
但它仍然不起作用.
代码如下: -
class Company_model extends MY_Model
{
----------------
$this->db->select(' count('.$fieldname. ') as num_stations');
$this->db->select(" CONCAT_WS(',', clb_company.address1, clb_company.address2, clb_company.city, clb_company.state, clb_company.zipcode ) as companyAddress");
$this->db->from($this->_table);
$this->db->join($this->_table_device, $fieldname1. " = ". $fieldname2, 'LEFT');
$this->db->where($blablafield , '0');
----------------
Run Code Online (Sandbox Code Playgroud)
错误如下: -
Error Number: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
'FROM (`clb_device`) JOIN …Run Code Online (Sandbox Code Playgroud) 我的登录表单中有一个函数,用于检查电子邮件和密码是否与数据库中的值匹配,如果是,则将用户登录到系统中.
如果此函数返回false,我想显示验证错误.
我的问题是我不确定如何创建它.该消息与密码和电子邮件字段有关,因此我不希望每个输入字段的规则只显示一条消息.
我已经尝试使用flashdata来实现这一点但它只在页面刷新时才有效.
如何仅为函数创建新的验证规则$this->members_model->validate_member()?
$this->form_validation->set_error_delimiters('<div class="error">', '</div>');
$this->form_validation->set_rules('email_address', '"Email address"', 'trim|required|valid_email');
$this->form_validation->set_rules('password', '"Password"', 'trim|required');
if ($this->form_validation->run() == FALSE)
{
$viewdata['main_content'] = 'members/login';
$this->load->view('includes/template', $viewdata);
}
else
{
if($this->members_model->validate_member())
{
Run Code Online (Sandbox Code Playgroud) 我有一个模型函数,用于更新我的Code Igniter应用程序中的用户:
// updates first of a user, return true if successful, false if not.
public function updateFirstName($userId, $newFirstName) {
$this->db->query("UPDATE users SET firstName='$newFirstName' WHERE id=$userId");
return // whether request was successful?
}
Run Code Online (Sandbox Code Playgroud)
如何返回一个布尔值,以确保ID的用户$userId已更新?例如,如果未找到具有ID的用户,则应返回false $userId.
我是CodeIgniter的新手,在我继续的时候遇到的问题是,在程序编码中,很容易修复
目前的问题是:我有这个控制器
class Basic extends Controller {
function index(){
$data['title'] = 'Page Title';
$data['robots'] = 'noindex,nofollow';
$data['css'] = $this->config->item('css');
$data['my_data'] = 'Some chunk of text';
$this->load->view('basic_view', $data);
}
function form(){
$data['title'] = 'Page Title';
$data['robots'] = 'noindex,nofollow';
$data['css'] = $this->config->item('css');
$data['my_other_data'] = 'Another chunk of text';
$this->load->view('form_view', $data);
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,一些数组项重复:
$data['title'] = 'Page Title';
$data['robots'] = 'noindex,nofollow';
$data['css'] = $this->config->item('css');
Run Code Online (Sandbox Code Playgroud)
难道没有办法让它们在控制器中"全局",所以我不必为每个函数键入它们吗?像(但这给我错误):
class Basic extends Controller {
// "global" items in the $data array
$data['title'] = 'Page Title';
$data['robots'] = …Run Code Online (Sandbox Code Playgroud) 我正在使用Codeigniter的下一个项目使用JQuery文件上传演示.谁能告诉我如何实现以下目标:
帮助赞赏!!
这看起来非常基本,但我无法理解它.
我正在尝试向控制器中的方法发送多个参数,如下所示:
http://localhost/ci/index.php/subjects/3/state
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的路线:
$route['subjects/(:num)'] = 'subjects/view/$1';
$route['subjects/(:num)/{:any}'] = 'subjects/view/$1/$2';
Run Code Online (Sandbox Code Playgroud)
方法接受2个参数:
public function view($slug, $id = null){
}
Run Code Online (Sandbox Code Playgroud)
但我似乎得到了404.我怎么能让这个工作?我需要view方法总是接受1个参数和可选的其他参数.
注意:我包括网址助手.
codeigniter codeigniter-url codeigniter-2 codeigniter-routing
两部分问题:
在我的CodeIgniter脚本中,我正在启动一个事务,然后插入一行,将insert_id()设置为php变量,使用新ID作为外键将更多行插入另一个表,然后我提交所有内容.
所以我的问题是:如果在结束事务之前一切都没有提交,如果没有插入任何内容,mysql如何能够返回最后一个插入ID?我的脚本(几乎)完美地工作,新ID在后续查询中使用.
(我说"差不多"因为,使用PDO mysql驱动程序,有时第一个应该返回insert_id()的插入是重复的 - 它被插入两次.任何想法为什么会这样?这与获取最后一个相关ID?如果使用mysqli或mysql驱动程序,它永远不会发生.)
我首先编写没有事务的脚本,所以我有代码检查一路上的mysql错误,例如:
if(!$this->db->insert($table, $data)) {
//log message here
}
Run Code Online (Sandbox Code Playgroud)
一旦我将所有mysql代码包装在事务中,这对mysql进程有何影响?它不会导致任何明显的错误(希望与上述问题无关),但它应该被删除吗?
谢谢.
我正在CodeIgniter中编写一个应用程序,我<title>在每个控制器的每个页面上指定元标记,我已设法将其发送到我的标题模板.但是,现在我已经创建了一个应用程序,通过CodeIgniter模型从数据库中获取信用卡及其标题.我想自动获取并使用信用卡的名称,<title>这样我就不需要手动更改它了,但我有点不知道如何继续.
这是我现在的代码:
调节器
public function show($card = NULL)
{
$data['query'] = $this->Listing_model->get_card($card);
$header["page_title"] = from the model
$this->load->view('includes/header',$header);
$this->load->view('listings/listing_card',$data);
$this->load->view('includes/footer');
}
Run Code Online (Sandbox Code Playgroud)
模型
function get_card($card = FALSE)
{
$query = $this->db->get_where('creditcards', array('slug' => $card), 0,1);
return $query->result();
}
Run Code Online (Sandbox Code Playgroud)
我在创建这个应用程序时一直遵循官方的CodeIgniter文档,但到目前为止还没有运气.有解决方案吗
codeigniter ×10
php ×5
mysql ×3
activerecord ×2
apache ×1
arrays ×1
backticks ×1
blueimp ×1
controller ×1
file-upload ×1
jquery ×1
pdo ×1
select ×1
transactions ×1
validation ×1