У меня есть jquery функция. Из которого я отправляю массив json в php, и после этого будет вызываться функция updates (), и в этой функции я сделал общий запрос на обновление. updates () будет принимать параметр column_name, данные как массив и условие как массив.
function theme1(id)
{
var data = {
'backgroundf0f0f0_bgcolor':'#ffffff',
'businessheadlineblack_h3_color':'#000000',
'backgroundcb3265_bgcolor':'#f569f5',
'background000033_bgcolor':'#483c42',
'span_icon_bgcolor':'#f569f5',
'span_icon_i_color':'#ffffff',
'usernamewhite_h4_color':'#000000',
'subheadingwhite_h5_color':'#000000',
'subheadingwhite_p_color':'#000000',
'cards_button_a_color':'#000000',
'edit_button_a_color':'#000000',
'edit_button_a_bgcolor':'#f569f5'
};
var edittemplate_update = 'edittemplate_update';
var datajson = JSON.stringify(data);
$.ajax({
url: '../../css_ajax.php',
type: 'post',
dataType: "json",
data: {'table_name': edittemplate_update, 'data': datajson},
success: function(response){
if(response != 0){
console.log(response);
}else{
alert('not updated!');
}
},
});
}
Сверху ajax Я отправляю json данные в php файле.
if(isset($_POST['table_name']))
{
$data = $_POST['data'];
$decodedata=json_decode($data);
$image_id = $_SESSION['image_id'];
$last_inserted_id = $_SESSION['last_inserted_id'];
$condition = array('digbizcard_id'=>$image_id,'edittemplate_id'=>$last_inserted_id);
$result = $obj->updates($_POST['table_name'],$decodedata,$condition);
if($result == TRUE || $result != '')
{
echo $decodedata;
}
else
{
echo $decodedata;
}
}
В updates () я сделал общий код для запроса на обновление. В котором имя таблицы, данные в массиве и условие в массиве будут отправлены и будет выполнен запрос на обновление.
функция обновления:
public function updates($table,$data,$conditions)
{
if(!empty($data) && is_array($data)){
$colvalSet = '';
$whereSql = '';
$i = 0;
$data2 = array();
foreach($data as $key=>$val)
{
$pre = ($i > 0)?', ':'';
$colvalSet .= $pre.$key." = ".":".$key;
$data2[":" . $key] = $val;
$i++;
}
if(!empty($conditions)&& is_array($conditions)){
$whereSql .= ' WHERE ';
$i = 0;
foreach($conditions as $key => $value){
$pre = ($i > 0)?' AND ':'';
$whereSql .= $pre.$key." = ".":".$key;
$data2[":" . $key] = $value;
$i++;
}
}
$stmt = "UPDATE ".$table." SET ".$colvalSet.$whereSql;
$stmt = $this->conn->prepare($stmt);
$stmt->execute($data2);
}else{
//$this->conn->close();
return false;
}
}
Я думаю, что данные должны быть в формате ниже :
$decodedata= array('index1'=>value1,'index2'=>value2);