我目前正在尝试使用 CodeIgniter 的对象关系映射器,但我遇到了一些我没有预料到的事情。
我有一个包含几个字段的表,其中一些字段不为空。生成缺少 NOT NULL 字段的插入查询 - 添加一个新行,但这些字段为空白。
我不知道 MySQL 会忽略查询中不存在的 NOT NULL 字段并无论如何插入该行。有没有办法限制这个?
-编辑-
让我添加更多细节并尝试对其进行更多解释
这是一个示例表:
CREATE TABLE `test` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`color` varchar(40) COLLATE utf8_bin DEFAULT '',
`shape` varchar(40) COLLATE utf8_bin NOT NULL,
`size` varchar(40) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_bin
Run Code Online (Sandbox Code Playgroud)
这是一个示例查询:
INSERT INTO `test` (`shape`) VALUES ('foo')
Run Code Online (Sandbox Code Playgroud)
我的查询中没有size,但它仍然添加该行 - 这是预期的吗?
(示例查询在 phpMyAdmin 中运行)
我需要将所有行相加以获得结果。使用 select_sum 如下
这是模型
function Dues_Paid_Tot($date)
{
$query = $this->db->select_sum('Dues_Paid', 'Dues_Paid_Tot');
$query = $this->db->get('Membership');
return $query->result();
}
Run Code Online (Sandbox Code Playgroud)
这是控制器
function Fiscal2()
{
$date = $this->input->post('Select_Date');
if($query = $this->report_model->fiscal_list($date))
{
$data['records'] = $query;
}
$data['date'] = $this->input->post('Select_Date');
$data['Dues_Paid_Tot'] = $this->report_model->Dues_Paid_Tot($date);
$data['main_content'] = 'report_fiscal_view';
$this->load->view('includes/template', $data);
}
Run Code Online (Sandbox Code Playgroud)
这是视图的相关代码
<?php echo $Dues_Paid_Tot; ?>
Run Code Online (Sandbox Code Playgroud)
问题是,我在视图中看到的是“Array”,而不是显示 Dues_Paid 列中所有条目的总和。
我哪里出错了?
谢谢!
我会将两个 php 变量从 codeigniter 控制器传递到位于视图头部的 javascript 函数。有可能做这样的事情吗?
这是我的模型 - 我想分配行并在视图页面上回显,例如<?php echo $product?>
class Model_products extends CI_Model {
function printer()
{
$id = $this->uri->segment(3, 0);
$q = $this->db->get_where('printer', array('id' => $id));
if ($q->num_rows == 1)
{
foreach ($q->result() as $row)
{
echo $row->name; # THIS WORKS
$data['product'] = $row->name; # THIS DOES NOT WORK
$data['desc'] = $row->description;
$data['size'] = $row->size;
$data['options'] = $row->options;
$data['more'] = $row->more_info;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的控制器
public function products()
{
$this->load->model('Model_products');
$this->Model_products->printer();
$this->load->view('products', $data);
$this->load->view('pricing');
}
Run Code Online (Sandbox Code Playgroud)
我的看法是
<h1>
<?php echo $product; ?> …Run Code Online (Sandbox Code Playgroud) 我一直在写这篇文章来生成pdf,但输出是空白的,并且没有显示错误,我已经输入了:
public function generate_pdf()
{
$this->load->library('mpdf');
$mpdf=new mPDF('utf-8','A4');
$mpdf->WriteHTML('<p>HTML content goes here...</p>');
$mpdf->Output();
}
Run Code Online (Sandbox Code Playgroud)
当我把:
public function generate_pdf()
{
$this->load->library('mpdf');
$mpdf=new mPDF('utf-8','A4');
$mpdf->debug = true;
$mpdf->WriteHTML('<p>HTML content goes here...</p>');
$mpdf->Output();
}
Run Code Online (Sandbox Code Playgroud)
参考这个答案,我收到此错误:
Output has already been sent from the script - PDF file generation aborted.
Run Code Online (Sandbox Code Playgroud) 我将 MAMP 用于 MAC,并且我在本地有一个项目。它运作良好。我决定更新这个项目并在 localhost 显示 500 错误后从我的 Web 服务器下载。
但是,当我输入另一个本地主机项目时,它可以工作。我使用 Codeigniter3 框架。问题出在哪里?
我需要一些帮助,因为这个问题困扰了我好几天,我不知道如何进一步处理。我正在使用 VueJs2 和 Codeigniter(Rest 控制器)作为我的 API 开发我的应用程序。我正在使用节点 web-pack 服务器(npm run dev),所以我的首页应用程序在http://localhost:8080 上运行。此应用程序正在向我的 Codeigniter 应用程序发出请求(我使用的是 nginx 虚拟主机,因此我可以在http://myapp.test上访问我的 api )
问题如下。我的 VueJs 应用程序正在从http://localhost:8080发出 GET 请求,并带有一些自定义标头
this.$http.get(this.$apiUrl + `rest/api/public/User/user/` + payload.id_user, {
// if i remove this custom header, everything works ok!
headers: {
jwttoken: token
}
})
Run Code Online (Sandbox Code Playgroud)
这是我关于 CORS 的 rest.php 配置
$config['check_cors'] = FALSE;
$config['allowed_cors_headers'] = [
'Origin',
'X-Requested-With',
'Content-Type',
'Accept',
'Jwt-token',
'jwttoken'
];
$config['allow_any_cors_domain'] = TRUE;
$config['allowed_cors_origins'] = [
'http://localhost:8080',
];
Run Code Online (Sandbox Code Playgroud)
这是我的控制器,让用户
class User …Run Code Online (Sandbox Code Playgroud) 当我要安装我的新 codeigniter 项目时。我得到了错误
致命错误:session_start(): 无法初始化存储模块:用户(路径:C:\xampp\tmp)在 C:\xampp\htdocs\Tetavendor\system\libraries\Session\Session.php on line 140
我在 stackoverflow PHP 7 用户会话问题中发现了类似的
问题 - Failed to initialize storage module
但是没有一个解决方案对我有用。我的 codeigniter 版本是 3.0.0。那么如何解决这个问题呢?
我正在将我的项目从 CodeIgniter 3 迁移到 CodeIgniter 4。我对框架的新结构感到困惑。所以这是我的问题,
我在App.php 中将我的基本网址设置为:
protected $proj_root= "http://".$_SERVER['HTTP_HOST'];
protected $proj_root2 = str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);
protected $mybase= $proj_root.$proj_root2;
public $baseURL = $mybase;
Run Code Online (Sandbox Code Playgroud)
但我收到这样的错误:
致命错误:常量表达式在第 26 行的 D:\xampp\htdocs\delivery_dashboard\app\Config\App.php 中包含无效操作
所以从字面上看,我只能这样做:
public $baseURL = "http://localhost/my_project/"
Run Code Online (Sandbox Code Playgroud)
如何使用动态设置我的基本 url$_SERVER['HTTP_HOST']或者这里有任何解决方法?
谢谢您的帮助!
在 CI3 中,我们制作自定义库并在 config/autoload.php 中自动加载它,然后我们可以在控制器、模型、视图中的任何地方使用它,通过简单的 $this->rules->status() 其中 Rules 是应用程序/库中的库文件夹
但是无法在 CI 4 中做同样的事情,是否有其他可用的替代方法