我正在使用codeigniter并从关联数组(来自外部网站)对我的表执行一些插入和更新操作,其中字段的数量并不总是相同。
这是我的代码。
$url ="http://api.peerindex.net/1/profile/show.json?id=$twittername&api_key=xxxxxx";
$ch = curl_init();
$timeout = 5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$peerdata = curl_exec($ch);
curl_close($ch);
if (strlen($peerdata)>10)
{
$peerdata = json_decode($peerdata);
$this->db->where ("userid", $this->userinfo->userid);
$this->db->update('userpeerdata', $peerdata);
}
我的表userpeerdata包含大约6列,但有些列不存在。我想要的是它应该只采用数据库中存在的那些列,其他应该忽略。我怎么能这么简单呢。
答案 0 :(得分:2)
您应该使用Codeigniter's array helper。它们有一个很好的小函数叫elements()
,它只会提取你想要的元素:
$this->load->helper('array');
$peerdata = json_decode($peerdata);
// Include a list of all your columns in the table...
$peerdata = elements(array('name', 'twitter', 'known', 'authority'), $peerdata);
$this->db->where ("userid", $this->userinfo->userid);
$this->db->update('userpeerdata', $peerdata);