目前在我的控制器中,当添加新数据时,我验证输入,如果有任何问题,它允许用户知道,否则它将数据传递给模型以插入数据库
我现在如何检查插入语句在模型中是否正常工作,并让用户知道它是否没有.
像下面这样的insert语句是返回true还是false,然后可以返回给控制器?
$this->db->insert('Faviroute_Addresses', $address_data);
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助
我试图使用自定义字符串选择一些值.下面是我的代码
$this->db->from('posted');
$st="infor='rent' AND (typeq='in' OR typeq='out')";
$this->db->where($st);
$q = $this->db->get();
Run Code Online (Sandbox Code Playgroud)
发生数据库错误
Run Code Online (Sandbox Code Playgroud)Error Number: 1054 Unknown column ‘infor=‘rent’’ in ‘where clause’ SELECT * FROM (`posted_ads`) WHERE `infor=‘rent’` AND (typeq=‘in’ OR typeq=‘out’) Filename: C:\wamp\www\parklot\system\database\DB_driver.php Line Number: 330
我认为问题是因为
WHERE `infor='rent'`
Run Code Online (Sandbox Code Playgroud)
当我manualy执行此代码时,它完美地工作.
WHERE infor='rent'
Run Code Online (Sandbox Code Playgroud)
我怎么摆脱
``
Run Code Online (Sandbox Code Playgroud)
因为它自动添加
我在调试CodeIgniter活动记录时发现了这个问题,如下所示:
$this->db->from("table_name");
$this->db->where("field_name", "");
$result = $this->db->get()->result_array();
Run Code Online (Sandbox Code Playgroud)
生成的查询是:
SELECT * FROM `table_name` WHERE `field_name` = 0; // Returns all rows in table
Run Code Online (Sandbox Code Playgroud)
即使空字符串被强制转换为0,我们也期望得到一个空的结果table_name.field_name充满了非空字符串值.但是,我从此查询中获取整个表.谁知道为什么?这根本不直观.
我尝试了没有强制转换为0的查询,它的工作原理如下:
SELECT * FROM `table_name` WHERE `field_name` = ""; // Empty result
Run Code Online (Sandbox Code Playgroud)
为什么演员阵容为0?
编辑:使用此替代CodeIgniter语法进行相同的强制转换:
$this->db->query('SELECT * FROM table_name WHERE field_name = ?', array(""));
Run Code Online (Sandbox Code Playgroud) 我正在使用CodeIgniter和jQuery UI Sortable小部件来更改我的菜单列表位置.
例如,如果我的菜单列表是这样的:
<li>menu 1</li>
<li>menu 2</li>
<li>menu 3</li>
<li>menu 4</li>
Run Code Online (Sandbox Code Playgroud)
我想把第一个菜单放在第二个菜单下,让它留在那里.
但是我有点困在jQuery上.
这是获取列表元素的原因:
<ul id="sortable">
<?php foreach ($rows as $r)
{
echo '
<li id="sort_'.$r->pid.'" class="ui-state-default"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>
' . $r->page_name . '
</li>';
}
?>
</ul>
Run Code Online (Sandbox Code Playgroud)
和jquery:
$( "#sortable" ).sortable({
placeholder: "ui-state-highlight",
opacity: 0.6,
update: function(event, ui) {
var info = $(this).sortable("serialize");
alert(info);
}
});
$( "#sortable" ).disableSelection();
Run Code Online (Sandbox Code Playgroud)
我设法提醒结果阵列.
现在我不希望任何人为我写这个,只是暗示如何使用ajax进行更新.
让我说在我的控制器名为Book,我有很多方法,比如
get_book(); read_book(); remove_book();
没有用户登录就不能使用类中的方法,我可以user_id从会话中获取.
我的问题是,检查user_id会话是否已设置以便我可以使用这些方法的最佳方法是什么?
至于现在,我正在考虑创建一个is_logged_in()方法,并使用if-else语句将其应用于每个方法,例如
if($this->is_logged_in()
{
//do something
}
else
{
//redirect to home
}
Run Code Online (Sandbox Code Playgroud)
这不是漫长而乏味吗?有没有最终的方法来实现这一目标?
我看了链接
但似乎我仍然需要is_logged_in在每种方法中应用检查.
感谢你们对我的帮助!
我正在使用codeigniter创建一个应用程序,并为实时内容实现nodejs.我想检查用户是否使用nodejs登录.使用下面的代码,我可以在nodejs服务器中获取codeigniter会话ID:
var server = require('https').createServer(options, function(request, response){
var cookies=(function(str){
var result={};
str.split(/;\s+/).forEach(function(e){
var parts=e.split(/=/,2);
result[parts[0]]=parts[1]||'';
});
return result;
})(request.headers.cookie),
sessionCookieName='ci_session',
sessionId=cookies[sessionCookieName]||'';
console.log(sessionId);
}).listen(8080);
Run Code Online (Sandbox Code Playgroud)
codeigniter会话存储在数据库中,加密设置为true.并且sess_match_ip = TRUE,sess_match_useragent = TRUE;
现在我的问题是,检查用户是否登录的好方法是什么?我已经安装了node-mysql客户端.我知道CI做的事情如下:
SELECT *
FROM (`ci_sessions`)
WHERE `session_id` = 'blabla'
AND `ip_address` = '127.0.0.1'
AND `user_agent` = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.2
(KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2'
Run Code Online (Sandbox Code Playgroud)
如何解密会话ID并检查我是否从db获得匹配?
提前致谢
乔治
美好的一天,我正在和Smarty一起学习CodeIgniter.我的CSS文件存储在
/App01/application/views/css/main.css
Run Code Online (Sandbox Code Playgroud)
要链接我的CSS,我使用:
<link rel="stylesheet" type="text/css" href="http://localhost:88/APP1/application/views/css/layout.css" media="screen" />
Run Code Online (Sandbox Code Playgroud)
但是我的页面上没有应用CSS.当我打开CSS URL时,我收到一条消息:
Forbidden
You don't have permission to access /APP1/application/views/css/layout.css on this server.
Run Code Online (Sandbox Code Playgroud)
拜托,我做错了什么?我想将CSS与视图保持在一起,因为将来我想学习如何创建多个主题,我认为CSS应该保存在主题文件夹中.
我可以用一些Smarty变量替换CSS文件的URL路径,这样当我移动我的应用程序时,我不需要手动更改模板中的CSS URL路径吗?
先感谢您!Vojtech
我想知道是否有人可以帮助我.我有一个form_dropdown,我正在填充数据库中的选项.我想在列表顶部添加默认的"请选择"值,但如果不将其添加到数据库中,则无法弄清楚如何执行此操作.
我的代码如下:
function populatedropdown()
{
$query = $this->db->query('SELECT * FROM '.$this->table_name.' WHERE active=1 ORDER BY brand');
$dropdowns = $query->result();
foreach($dropdowns as $dropdown) {
$dropDownList[$dropdown->brand] = $dropdown->brand;
}
$finalDropDown = $dropDownList;
return $finalDropDown;
}
Run Code Online (Sandbox Code Playgroud) 无论如何转换CodeIgniter的表单验证错误消息而不触及系统文件?
php validation localization codeigniter internationalization
我想做的是这样的:
function registerUser($username, $password){
$this->db->insert('tblUsers', array('username'=>$username, 'password'=>md5($password)));
if($this->db->_error_number()==1062){
return "DUPLICATE";
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
但是,如果有一个重复的密钥,那么它不会让我得到这个_error_number()位.它显示如下错误:

如何让codeigniter停止出错并将错误号传递给我以便妥善处理?
谢谢
codeigniter ×10
php ×6
mysql ×3
session ×2
activerecord ×1
ajax ×1
casting ×1
css ×1
insert ×1
jquery ×1
localization ×1
node.js ×1
validation ×1