我遇到以下代码的问题,要将记录添加到CodeIgniter中的'offer'db表中。
数据库表(mySQL):
1 ID int(11) No
2 OfferName varchar(150) latin1_swedish_ci No
3 OfferLength varchar(150) latin1_swedish_ci No
4 OfferTitle varchar(150) latin1_swedish_ci No
5 OfferDescription varchar(300) latin1_swedish_ci No
6 OfferURL varchar(150) latin1_swedish_ci No
7 OfferContent varchar(300) latin1_swedish_ci No
8 Key varchar(10) latin1_swedish_ci Yes NULL
模型中的方法(offer_model.php):
public function entry_insert(){
$data = array(
'OfferName' => $this->input->post('OfferName'),
'OfferLength' => $this->input->post('OfferLength'),
'OfferTitle' => $this->input->post('OfferTitle'),
'OfferDescription' => $this->input->post('OfferDescription'),
'OfferURL' => $this->input->post('OfferURL'),
'OfferContent' => $this->input->post('OfferContent'),
);
$this->db->insert('offers',$data);
}
控制器:
function addOffer() {
//if the form is submitted
if ($this->input->post('mysubmit')) {
//insert data into db using offer_model model
$this->offer_model->entry_insert();
}
视图中的表格:
<div class="form">
<?php echo form_open('newOffer/addOffer'); ?>
<legend>Please enter details for your new offer</legend>
<label for="OfferName">Offer Name: <span class="required">*</span></label>
<input type="text" name="OfferName" id="Offer Name" placeholder="Please enter the name of your offer"/>
<label for="OfferLength">Offer length:</label>
<input type="text" name="OfferLength" id="OfferLength" placeholder="Please enter the length of your offer"/>
<label for="OfferTitle">Offer title:</label>
<input type="text" name="OfferTitle" id="OfferTitle" placeholder="Please enter the title of your new offer"/>
<label for="OfferDescription">Offer description: </label>
<input type="text" name="OfferDescription" id="OfferDescription" placeholder="Please enter a description of your new offer"/>
<label for="OfferURL">Offer link URL:</label>
<input type="text" name="OfferURL" id="OfferURL" placeholder="Please enter the URL of your new offer"/>
<label for="OfferContent">Offer content:</label>
<input type="text" name="OfferContent" id="OfferContent" placeholder="Please enter the content for your new offer"/>
<fieldset class="submit_field">
<?php echo form_submit('mysubmit', 'Submit Form'); ?>
</fieldset>
</div><!-- end of form div -->
提交表单结果如下:
错误号码:1054'字段列表'中的未知列'OfferName'
只是因为桌子在那里并且字段名称似乎匹配而无法理解? 任何帮助将非常感激。提前谢谢!
答案 0 :(得分:2)
迟到的答案,但可能有助于其他人继续前进。
我在其中一个查询中收到此1054错误。我的查询是一行:
$q = $this->db->get('table');
但由于某种原因,我得到的数据库错误包括一个28 null的查询,其中包含的字段不仅没有从查询中调用但在该表中不存在(因此db错误)。
我做了$ this-&gt; db:
的转储 var_dump($this->db);
...它向我展示了CI ar_where var确实已经满了这个奇怪的数据。 我意识到这是来自之前在页面上执行的唯一其他查询,然后实现了原因。之前的数据库调用是从库中进行的,因此使用了:
$this->CI->db->get('someTable');
因此以前的数据没有被清除。手动清除第一个库函数末尾的数据后,所有工作都再次正常,1054错误消失了。
另外,为了解决shomz建议,如果存在查询错误,则在成功查询之后,last_query()将永远不会执行。执行暂停之前可以使用db错误执行该行。在这种情况下,它也没有帮助我。但var_dump($ this-&gt; db)确实有助于此目的!
答案 1 :(得分:0)
echo $this->db->last_query();
将在许多情况下拯救你的生命。
您的模型中还有语法错误(尾随逗号):
'OfferContent' => $this->input->post('OfferContent'),
另外,您在第一段中写道,该表名为offer
,但您正在插入offers
。确保你也清理了它。
答案 2 :(得分:0)
这样写查询: $ this-> db-> query(“插入用户(用户名,密码)值('$ username','$ lastname')”);
变量名应该用单引号引起来。