我正在使用codeigniter,并且大部分时间都使用活动记录进行查询(自动转义它们),但由于变量,此查询似乎并不适合它.所以我需要弄清楚如何手动转义查询.
Codeigniter文档建议以这种方式转义查询:
$sql = "INSERT INTO table (title) VALUES(".$this->db->escape($title).")";
Run Code Online (Sandbox Code Playgroud)
我的原始查询
$sql = "SELECT * FROM (`user_language`) WHERE `user_id` = '{$id}'";
Run Code Online (Sandbox Code Playgroud)
我的转义查询
$sql = "SELECT * FROM (`user_language`) WHERE `user_id` = '{$id}' VALUES(".$this->db->escape($user_language).")";
Run Code Online (Sandbox Code Playgroud)
但我无法正确使用语法.错误消息是:
<? if ( ! defined('BASEPATH')) exit();
class Registration extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('registration_model');
}
public function index() {
$this->load->library('form_validation');
$this->form_validation->set_rules('email', 'E-mail', 'trim|required|valid_email|callback_email_available');
if($this->form_validation->run() == FALSE) {
$this->load->view('registration');
} else {
$this->registration_model->add_user();
}
}
# Check E-mail
public function email_available($email) {
$this->db->select('email');
$this->db->where('email', $email);
$query = $this->db->get('users');
$result = $query->row();
if(!empty($result)) {
$this->form_validation->set_message('email_available', 'This e-mail belongs to another user.');
return FALSE;
} else {
return TRUE;
}
}
}
?>
Run Code Online (Sandbox Code Playgroud)
我有一份表格验证的注册表格.我有一个回调函数来验证电子邮件的唯一性.
所有代码都可以正常工作,但我可以直接访问带有错误的回调函数
examle.com/registration/email_available
A PHP Error was …Run Code Online (Sandbox Code Playgroud) 我的申请表上有注册表.当有人完成注册时,会收到一封电子邮件,其中包含确认注册的链接(典型情况).
链接是这样的
编码用户名:
$encrypted_username = $this->encrypt->encode($username);
Run Code Online (Sandbox Code Playgroud)
但是,访问该链接会返回以下错误
所提交的网址带有不被接受的字符.
设置$config['permitted_uri_chars'] = '';一切顺利,但他们说我们不应该这样做.
那么,我该如何解决这个问题呢?
我已经使用codeigniter成功配置了第二个数据库,并且能够创建表.现在的问题是,现在使用的每个以前存在的代码行都$this->db使用第二个数据库,所以它自然会弹出错误.让我解释一下细节:
我使用codeigniter的迁移库,在新的迁移中,我使用dbforge创建数据库,就像这样$this->dbforge->create_database('website_store').到目前为止一直很好,然后我使用$DB2 = $this->load->database('store', TRUE);并创建一个表连接到这个数据库.一切都很好.
然后迁移结束,codeigniter尝试更新迁移表以推送最新版本,但查看store数据库而不是默认数据库,因此它会弹出以下错误:
Table 'website_store.migrations' doesn't exist
UPDATE `migrations` SET `version` = 45
Run Code Online (Sandbox Code Playgroud)
希望有人知道使用多个数据库和迁移库.顺便说一句,在database.php文件中,它被设置为使用默认数据库:$active_group = "default";而不是商店数据库,所以它应该工作.看起来迁移库看到已经加载了数据库,感觉很懒,并使用了那个.
注意: 看起来这些人有类似的问题,他们通过将'pconnect'设置为'false'来修复,但保持与两个数据库的连接会很好:
我的sparks安装使用我的codeigniter安装时遇到问题
以下是我采取的步骤如下:
我codeigniter通过我的项目文件夹的根目录PHPCLI使用以下命令安装sparks
php -r "$(curl -fsSL http://getsparks.org/go-sparks)"
Run Code Online (Sandbox Code Playgroud)我使用下面的spark命令安装了活动记录库
php tools\spark install -v0.0.2 php-activerecord
Run Code Online (Sandbox Code Playgroud)2A.这个命令给了我下面的文件夹结构
-application
-sparks
-php-activerecord
-0.0.2
-config
-variables
-vendor
-system
-tests
-tools
-lib
-spark
-sparktypes
-test
-user_guide
Run Code Online (Sandbox Code Playgroud)
2B.此命令生成一个sparks包含php active record文件夹,用于构成必要的组件php-activerecord,使用该命令生成一个如下所示的MY_Loader.php文件
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
/**
* Sparks
*
* An open source application development framework for PHP 5.1.6 or newer
*
* @package CodeIgniter
* @author …Run Code Online (Sandbox Code Playgroud) 上传到服务器的codeigniter项目给我以下错误.
您的系统文件夹路径似乎未正确设置.请打开以下文件并更正:index.php
它在本地和000webhost.com托管上运作良好.
当上传到并行的私人服务器时,它会出现上述错误.
我的index.php如下.
<?php
define('ENVIRONMENT', 'development');
if (defined('ENVIRONMENT'))
{
switch (ENVIRONMENT)
{
case 'development':
error_reporting(E_ALL);
break;
case 'testing':
case 'production':
error_reporting(0);
break;
default:
exit('The application environment is not set correctly.');
}
}
$system_path = 'system';
$application_folder = 'application';
if (defined('STDIN'))
{
chdir(dirname(__FILE__));
}
if (realpath($system_path) !== FALSE)
{
$system_path = realpath($system_path).'/';
}
$system_path = rtrim($system_path, '/').'/';
if ( ! is_dir($system_path))
{
exit("Your system folder path does not appear to be set correctly. …Run Code Online (Sandbox Code Playgroud) 所以......我把一些代码住一天(即工作我的本地机器上100%的罚款),但杀了服务器-没有笨日志,没有Apache日志,die('msg')并exit()没有工作-我从来没有在之前经历过5+多年的PHP开发.
在50多次提交到我的回购之后,我将问题缩小到一个声明,该声明在拆分时有效,但不能在一起.
系统信息:
PHP版本:5.4.13
Codeigniter版本:
define('CI_VERSION', '2.1.3');
这些行有效(在Codeigniter MY_Controller函数中调用):
dump($this->get_val('order_id'));
$tmp = $this->get_val('order_id');
dump($tmp);
dump(empty($tmp));
dump(!empty($tmp));
Run Code Online (Sandbox Code Playgroud)
但是当我添加以下行时,会发生上述崩溃:
!empty($this->get_val('order_id'))
Run Code Online (Sandbox Code Playgroud)
这似乎是一个PHP错误?
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Main extends Administration {
function index() {
// if (!empty($in['order_id'])) { /* BROKEN */
dump($this->get_val('order_id'));
$tmp = $this->get_val('order_id');
dump($tmp);
dump(empty($tmp));
dump(!empty($tmp));
// dump(!empty($this->get_val('order_id'))); /* BROKEN */
// if (!empty($this->get_val('order_id'))) { /* BROKEN */
// dump(true);
// } else {
// dump(false);
// }
}
}
Run Code Online (Sandbox Code Playgroud)
我在codeigniter中的模型中有这个代码:
<?php
Class Mymodel Extends CI_Model
{
function __construct()
{
parent::__construct();
}
function search($textinput)
{
$street = "select street from dataSearch;";
$stripNameWOSpace = "select stripNameWOSpace FROM dataSearch;";
$vowels = array('a','e','i','o','u',';','/','-', ' ');
$string = strtolower($textinput);
$strippedVowels = mysql_real_escape_string(str_replace($vowels, '', $string));
$this->db->query("select dataSearch.id,
dataSearch.name,
dataSearch.street,
dataSearch.city,
dataSearch.lat,
dataSearch.lng,
category.asiatype from dataSearch join category on dataSearch.cat = category.id
where dataSearch.street like '%".$textinput."%'");
$this->db->query("select dataSearch.id,
dataSearch.name,
dataSearch.street,
dataSearch.city,
dataSearch.lat,
dataSearch.lng,
category.asiatype from dataSearch join category on dataSearch.cat = category.id
where dataSearch.stripNameWOSpace like '%".$strippedVowels."%'"); …Run Code Online (Sandbox Code Playgroud) 如何使用CodeIgniter打印在收到的请求的标题中设置的值?
我试过print_r($_SERVER);哪个对我不起作用.我希望使用CI的方式不同.
codeigniter-2 ×10
php ×8
codeigniter ×6
mysql ×2
mongodb ×1
mongodb-php ×1
sql ×1
uri ×1
xampp ×1