Activerecord 编码点火器:未知列xxx位于‘;其中第’条;
我现在正在处理一个bug(?)几个小时,但无法修复它 这是我的代码:Activerecord 编码点火器:未知列xxx位于‘;其中第’条;,activerecord,codeigniter,Activerecord,Codeigniter,我现在正在处理一个bug(?)几个小时,但无法修复它 这是我的代码: if(!$this->db->get_where('merken',array('m_merken' => $brand))->count_all_results()){ $insetData = array('m_name' => $brand); $this->db->insert('merken', $insetData); } $brand在此
if(!$this->db->get_where('merken',array('m_merken' => $brand))->count_all_results()){
$insetData = array('m_name' => $brand);
$this->db->insert('merken', $insetData);
}
$brand在此预览中包含“Acer”
A Database Error Occurred
Error Number: 1054
Unknown column ‘Acer’ in ‘where clause’
SELECT * FROM (`merken`) WHERE `m_name` = Acer
我想检查它是否已经存在,但它不会很好地工作 如果没有引号,您的声明:
SELECT * FROM (`merken`) WHERE `m_name` = Acer
Acer
指的是列名称。如果您的意图是字符串文字,请将其放在单引号中,如中所示:
SELECT * FROM (`merken`) WHERE `m_name` = 'Acer'
此外,作为一种良好的编程实践,避免使用SELECT*
,最好选择要返回的每一列,即使列表很长
--编辑--
我想我没抓住重点。。。生成SQL。有两件事需要检查:
m_name
是否正确声明为string/varchar/char
字段?
否则,请尝试将品牌名称设置为带有引号的“Acer”。不过,我怀疑这是一个合理的解决方案。没有引用,您的声明:
SELECT * FROM (`merken`) WHERE `m_name` = Acer
Acer
指的是列名称。如果您的意图是字符串文字,请将其放在单引号中,如中所示:
SELECT * FROM (`merken`) WHERE `m_name` = 'Acer'
此外,作为一种良好的编程实践,避免使用SELECT*
,最好选择要返回的每一列,即使列表很长
--编辑--
我想我没抓住重点。。。生成SQL。有两件事需要检查:
m_name
是否正确声明为string/varchar/char
字段?
否则,请尝试将品牌名称设置为带有引号的“Acer”。不过,我怀疑这是一个合理的解决方案。我看到我的输入错误“m_merken”必须是“m_name”,但仍然是一个错误。;-)我看到我的输入错误“m_merken”,必须是“m_name”,但仍然是一个错误m_名称声明为varchar(255),我也尝试了以下代码:if($this->db->get_where(“merken”,array(“name”=>“$brand”))->count_all_results()==0){$insettdata=array(“name”=>“$brand”);$this->db->insert(“merken”,insettdata);echo“success”}其他{echo“已经存在”}但当我尝试什么都不返回时,所以出现了一些错误,但不知道是什么。没有错误,也没有成功/存在。如果($this->db->get_where(“merken”,array(“name”=>$brand))->count_all_results()==0){$insettdata=array(“name”=>$brand);$this->db->insert(“merken”,$insettdata);echo“gelukt”}否则{echo“bestaat al?”}现在似乎可以了,谢谢!singe引用并将名称m_name更改为“name”(在代码和数据库中)已经起作用了。感谢您的时间!m_name声明为varchar(255),我也尝试了以下代码:if($this->db->get_where(“merken”,array(“name”=>“$brand”)->count all_results()=0){$insettdata=array(“name”=>“$brand”);$this->db->insert(“merken”,$insettdata);echo“succes”}否则{echo“已经存在”}但是当我尝试什么都不返回时,所以出现了一些错误,但不知道是什么。没有错误,也没有成功。如果($this->db->get_where(“merken”,array(“name”=>$brand))->count_all_results()==0){$insettdata=array(“name”=>$brand);$this->db->insert(“merken“,$insetData);echo“gelukt”}否则{echo“bestaat al?”}现在似乎可以工作了,谢谢!singe引用并将名称m_name更改为“name”(在代码和数据库中)已经工作了。谢谢您的时间!