我有这样的代码,可以像这样从API获取数据
[
{
"service": 1,
"name": "Followers",
"type": "Default",
"category": "First Category",
"rate": "0.90",
"min": "50",
"max": "10000"
},
{
"service": 2,
"name": "Comments",
"type": "Custom Comments",
"category": "Second Category",
"rate": "8",
"min": "10",
"max": "1500"
}
]
然后将类别插入列名称为title的数据库表类别中。
然后将服务插入服务表中,但是在此之前,它会检查服务的类别名称是否看起来像插入数据库中以类别ID标记服务的任何类别。
// Get categories
$category = array_column($services, "rate", "category");
// Foreach and Insert each one to the database
foreach($category as $key => $value){
$data = array('title' => $key,'status' => 1, 'server' => $server_id);
$this->db->insert('categories', $data);
}
// Add services
foreach($services as $item){
$catData = $this->Setting->get_data('*', 'categories', 'WHERE title LIKE "'.$item['category'].'%"');
if($catData){
$catID = $catData->id;
}else{
$catID = 0;
}
$data = array(
'title' => $item['name'],
'description' => "",
'category' => $catID,
'price' => $item['rate'],
'min' => $item['min'],
'max' => $item['max'],
'status' => 1,
'server' => $server_id,
'service_id' => $item['service']
);
$this->db->insert('services', $data);
}
我有一个小问题,我不能在标题中使用operator =,因为API提供程序在诸如?这样的类别标题中放置了一些特殊字符,因此标题为♛PROMOTION(Cheap Services)?的类别将是♛PROMOTION(廉价服务)并存储在没有without
的数据库中因此,如果我使用了运算符=它将失败,因此我想使用Like运算符,但又遇到了另一个问题,来自API的标题包含?,而存储的标题不是
如何使其选择标题看起来像的类别?
答案 0 :(得分:1)
如果来自API的类别具有比数据库中的类别更多的字符,则可以反过来表示数据库中的类别是否是API字符串的一部分。...
$catData = $this->Setting->get_data('*', 'categories',
'WHERE "'.$item['category'].'" LIKE CONCAT("%",title,"%")');