我在其他开发者创建的网站上进行维护。客户端遇到了一些数据显示问题,我将其缩小到输入形式,或者更具体地说是POST数据处理。所有字段都是TEXTAREA字段,控制器函数如下所示:
85 $data=array(
86 'f_location'=>$this->input->post('flocation'),
87 's_location'=>$this->input->post('slocation'),
88 't_location'=>$this->input->post('tlocation'),
89 'forthlocation'=>$this->input->post('forthlocation'),
90 'fifthlocation'=>$this->input->post('fifthlocation'),
91 'sixthlocation'=>$this->input->post('sixthlocation')
92 );
93 $query=$this->admin_model->updatelocation($data);
模型中的updatelocation函数是:
54 function updatelocation($data){
55 $query=$this->db->where('id','1');
56 $query=$this->db->update('location',$data);
57
58 if($query){
59 return true;
60 }else{
61 return false;
62 }
63 }
无论出于何种原因,每当我通过表单提交任何类型的文本数据时,它都会将其作为“' 0”存储在数据库中。当我提交整数时,它直接存储整数。为了使事情变得更奇怪,我只是尝试在控制器函数内部执行print_r($_POST)
,如果有任何整数,则接受所有数据,包括文本。如果所有字段都是文本,则$ _POST数组为空。
我无论如何都不是CodeIgniter的专业人士,但我至少可以自己解决这个问题,但我无法解决这个问题。
此处列出了我目前检查过的内容:
我确定还有其他一些我现在无法想到的事情。哦,还有一件奇怪的事。我家里有一台本地开发服务器。当我将整个代码库下载到该服务器时,一切正常。从字面上看,我所做的唯一改变是配置中的baseurl,所以它在我的本地工作,然后一切正常工作:文本,整数,一切。仅在远程托管网站上,文本不会通过。任何帮助表示赞赏。我彻底难倒了。
编辑1:使用var_dump($this->input->post())
作为控制器中的第一个操作进行了一些进一步的测试。当所有6个输入字段都是文本时,它将返回bool(false)
。如果有文本,CodeIgniter就不会识别表单数据。
表单的HTML是:
<form name="addlocation" action="<<<redacted>>>" method="post">
<h2>Add Location data</h2>
<p><textarea style="margin-left:5px;" rows="3" cols="4" required placeholder="Firstlocation" name="flocation">0</textarea> </p>
<p><textarea style="margin-left:5px;" rows="3" cols="4" required placeholder="Secondlocation" name="slocation">0</textarea></p>
<p><textarea style="margin-left:5px;" rows="3" cols="4" required placeholder="Thirdlocation" name="tlocation">0</textarea></p>
<p><textarea style="margin-left:5px;" rows="3" cols="4" required placeholder="Forthlocation" name="forthlocation">0</textarea></p>
<p><textarea style="margin-left:5px;" rows="3" cols="4" required placeholder="Fifthlocation" name="fifthlocation">0</textarea></p>
<p><textarea style="margin-left:5px;" rows="3" cols="4" required placeholder="Sixthlocation" name="sixthlocation">0</textarea></p>
<button class="btn btn-success" type="Submit" value="Submit">Update</button1>
</form>
我试过删除所需的,没有运气。 &#39; 0&#39; 0正在从数据库中提取,因为它是当前值。正在将值写入数据库,但不正确。
答案 0 :(得分:2)
我找到了答案,这很奇怪。与CI,表单,数据库无关。我正在做更多的谷歌搜索,并发现this article here.他的问题是他试图上传图像,我没有做,但至少它让我至少考虑到这一点。由于完全相同的代码在我本地工作,我曾经在服务器上有一些东西导致了这一点。在服务器上运行快速phpinfo()
已确认,网站post_max_size
设置为100字节。因此,文本不是打破了它,它是多少文本。在修复它之前,我通过在每个字段中输入一个字母进行确认并修复它。无论如何,我的本地服务器的post_max_size
为8M,这解释了它的工作原理。我将一个php.ini文件添加到远程服务器并将post_max_size
设置为8M,一切正常。
我现在已经在这个问题上撞了几个星期。我感谢所有阅读此内容的人,并为我着想。这是我多年来第二个模糊不清的问题:)