我有一个从数据库中提取行的函数,content-> id和content->类型用于动态调用已加载模型中的amethod来获取和格式化对象详细信息.返回对象后,它将添加到数组中.一切都很好,除了当我来使用数组虽然它有正确数量的项目,它们都包含相同的对象,即使我知道它们返回不同.我完全失去了这个,任何帮助/想法都会很棒!
代码如下:
foreach($query->result() as $content)
{
$item = $this->{'mod_'.$content->type}->get($content->id);
print_r($item);
$items[] = $item;
}
print_r($items);
Run Code Online (Sandbox Code Playgroud)
而print_r语句产生了这个:
stdClass Object
(
[id] => 30
[type] => page
)
stdClass Object
(
[id] => 29
[type] => page
)
Array
(
[0] => stdClass Object
(
[id] => 29
[type] => page
)
[1] => stdClass Object
(
[id] => 29
[type] => page
)
)
Run Code Online (Sandbox Code Playgroud) 我正在使用CodeIgniter,我有一个带有复选框的表单,允许用户检查并删除他们上传的照片.
在我的控制器中,我if(isset($checked) == 1)用来检查用户是否要删除照片.
$photo_to_table将设置为空并传递给$this->tank_auth->update_user()执行数据库更新,并将照片字段设置为在表中为空.否则,它将保持相同的照片.
但是在我的代码中,无论我是否检查,当我点击UPDATE按钮时,它会不断删除照片,我想知道它为什么会发生?
有人可以通过我的代码并给出建议吗?
控制器:
$user_id = $this->session->userdata('user_id');
$profile = $this->users->get_profile_by_id($user_id);
if(!empty($_FILES['photo']['name']))
{
//image upload process
}
else
{
$checked = $this->input->post('remove');
if(isset($checked) == 1)
{
$photo_to_table = '';
// here will do remove process to delete file in directory
}
else
{
$photo_to_table = $profile->photo;
}
}
if($this->form_validation->run()) { // validation ok
if(!is_null($data = $this->tank_auth->update_user(
$this->form_validation->set_value('name'),
$this->form_validation->set_value('country'),
$this->form_validation->set_value('website'),
$photo_to_table
)))
{
// success
$this->session->set_flashdata('msg', 'Profile has been updated');
redirect(current_url()); …Run Code Online (Sandbox Code Playgroud) 我被聘请在新的PHP 5.3服务器上使用Laravel 4重建一个在CodeIgniter 1.7.3(在PHP 4.2服务器上)上构建的活跃应用程序.
该系统有大约500个用户,其密码使用salted SHA-1哈希进行加密.我想使用bcrypt来提高应用程序的安全性以及与Laravel 4的身份验证系统集成.
您如何建议迁移这些用户密码?
这是我第一次设置测试套件,所以我可能会犯一些愚蠢的错误.
我只是设置Codeception来为CodeIgniter项目编写一些测试.我有一些简单的测试工作(耶!)但我现在正在编写验收测试以确保我的登录表单有效.填写表单并单击提交工作正常,但是当我尝试在提交后检查页面时,似乎没有遵循重定向.
重定向是301标头重定向.编辑:FALSE关闭我使用的auth库执行"重新加载"标头重定向.使用真正的301修复了问题.
我假设应该遵循重定向.我需要设置/配置以使301重定向工作吗?
我的验收测试:
<?php
$I = new WebGuy($scenario);
$I->wantTo('Login');
$I->amOnPage('/');
$I->fillField('identity', 'manager@example.com');
$I->fillField('password', 'password');
$I->click('submit');
$I->see('Logged In Successfully');
Run Code Online (Sandbox Code Playgroud)
我在调试模式下运行测试时的输出.在InvalidArgumentException被抛出错误,因为它看起来在页面的DOM是空的:
Codeception PHP Testing Framework v1.7.1
Powered by PHPUnit 3.7.27 by Sebastian Bergmann.
Acceptance Tests (1) -----------------------
Trying to login (LoginCept.php)
Scenario:
* I am on page "/"
* I fill field "identity","manager@example.com"
* I fill field "password","password"
* I click "submit"
* I see "Logged In Successfully"
ERROR
---------------------------------------------
Time: 3.96 seconds, …Run Code Online (Sandbox Code Playgroud) 我想要做的是加载库,如果它们尚未加载(CI的库,或者是自定义的库)在网站的许多不同点上.所以我想对此进行检查.
我已经在Loader库上搜索并找到了is_loaded()函数,所以我可以这样做:
if ($this->load->is_loaded('form_validation') === false) {
$this->load->library('form_validation');
}
Run Code Online (Sandbox Code Playgroud)
这个奇怪的事情(启用了探查器)是内存上升,这让我想知道这是不是正确的方式.
我想在Codeigniter中创建一个搜索表单.我想给用户4个不同的搜索选项.对于结果,我想要一个表,显示我正在搜索的表中的所有11列.这是我到目前为止的代码.
控制器:
public function index(){
$this->searchTest();
}
public function searchTest(){
$this->load->model('reg_model');
$search_term = array(
'firstName' => $this->input->post('firstName'),
'lastName' => $this->input->post('lastName'),
'street' => $this->input->post('street'),
'dob' => $this->input->post('dob'));
$data['query'] = $this->reg_model->test($search_term);
$this->load->view("reg_header");
$this->load->view("reg_nav");
$this->load->view("reg_search_form", $data);
$this->load->view("reg_search", $data);
Run Code Online (Sandbox Code Playgroud)
模型:
public function test($search_term='default'){
$this->db->select('*');
$this->db->from('voterinfo');
$this->db->like('firstName', $search_term);
$this->db->or_like('lastName', $search_term);
$this->db->or_like('street', $search_term);
$this->db->or_like('dob', $search_term);
$query = $this->db->get();
return $query->result_array();
Run Code Online (Sandbox Code Playgroud)
}
视图:
<?php $this->load->library('table'); foreach ($query as $row){ echo $this->table->generate($row); }?>
Run Code Online (Sandbox Code Playgroud) 我正在使用这个库在我的项目中实现twitter Oauth,并且如果在这种情况下它是相关的,则使用codeigniter.
我试图根据推文ID获取推文,但它返回一个错误:
{"errors":[{"message":"Sorry, that page does not exist","code":34}]}
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的代码:
public function gettweetbyid() {
$this->config->load('twitter');
$consumer = $this->config->item('twitter_consumer_token');
$consumer_secret = $this->config->item('twitter_consumer_secret');
$access_token = $this->config->item('twitter_access_token');
$access_token_secret = $this->config->item('twitter_access_secret');
$connection = $this->twitteroauth->create($consumer, $consumer_secret, $access_token, $access_token_secret);
$content = $connection->get('account/verify_credentials');
$data = array(
'id' => $this->input->get('id')
);
$tweets = $this->twitteroauth->get('statuses/show', $data);
echo json_encode($tweets);
}
Run Code Online (Sandbox Code Playgroud)
我知道一切都是正确的,因为我也使用插件来获取基于主题标签的推文,这根本不是问题.
我得到的URl看起来与他们的文档url非常相似:
https://api.twitter.com/1.1/statuses/show.json?id=408541017676460000&....
Run Code Online (Sandbox Code Playgroud)
我现在正在看这一整天,我的时间已经不多了......
任何帮助,将不胜感激!
编辑:另外,有什么方法在Twitter上我可以检查ID是否确实存在?虽然我不认为这是问题所在,我想知道以备将来参考
我正在我的CodeIgniter项目中创建一个搜索页面.在提交时,表单调用控制器函数,通过模型函数获取数据,并将生成的数组传递给视图
问题是,当我刷新结果页面时,表单重新提交,因为$ _POST数据仍然存在于请求标头中.如何避免重新提交确认消息
以下是我的表单的代码:
<!--form-->
<form id="find" action="<?php echo base_url()?>search/find" method="post">
<input type="text" name="search_key" class="tb4" id="search_key" placeholder="Search here"/>
<input type="button" value="search"/>
</form>
Run Code Online (Sandbox Code Playgroud)
以下是我的控制器的代码:
/*
* function for fetching search results
* @param void
* @return void
*/
public function find()
{
$data['search_result']=$this->search_model->search($this->input->post('search_key'));
$this->load->view('template/header');
$this->load->view('pages/search_result',$data);
$this->load->view('template/footer');
}
Run Code Online (Sandbox Code Playgroud)
请帮助我.我不能使用重定向而不是加载视图,因为我必须将结果数组$ data传递给视图.
有没有办法在批量插入查询中执行,如果密钥已经存在,请在codeigniter中更新该行?我已经阅读了文档,发现只有insert_batch和update_batch.但是如何在活动记录中使用重复键更新行?如果在batch_insert中无法插入或更新一行,会发生什么?所有插入失败或只有那一行?
我创建了一个ENUM字段,这是我的代码:
$field['test'] = array(
'type' => 'ENUM',
'constraint' => array('a','b','c'),
'default'=> "a"
);
$this->dbforge->add_field($field);
$this->dbforge->create_table('demo');
Run Code Online (Sandbox Code Playgroud)
我收到一条消息:
错误号码:1064
您的SQL语法有错误; 检查与MySQL服务器版本对应的手册,以便在'Array'附近使用正确的语法DEFAULT'a'NOTE NULL)DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci'在第2行
CREATE TABLE
ci_demo(testENUM(Array)DEFAULT'a'NOT NULL)DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
请帮帮我,非常感谢你.