這篇文章主要介紹了thinkphp解決數(shù)據(jù)傳入數(shù)據(jù)庫中特殊字符的問題,為了解決這個(gè)問題,你需要確保在插入數(shù)據(jù)庫之前,不對(duì)文本內(nèi)容進(jìn)行HTML實(shí)體編碼,需要的朋友可以參考下
GPT4.0+Midjourney繪畫+國(guó)內(nèi)大模型 會(huì)員永久免費(fèi)使用!
【 如果你想靠AI翻身,你先需要一個(gè)靠譜的工具! 】
thinkphp解決數(shù)據(jù)傳入數(shù)據(jù)庫中特殊字符的問題
為了解決這個(gè)問題,你需要確保在插入數(shù)據(jù)庫之前,不對(duì)文本內(nèi)容進(jìn)行HTML實(shí)體編碼。如果你是從前端獲取的數(shù)據(jù),檢查是否在發(fā)送請(qǐng)求前使用 htmlspecialchars()
或類似方法進(jìn)行了轉(zhuǎn)義。如果是后端處理邏輯導(dǎo)致的轉(zhuǎn)義,那么在插入數(shù)據(jù)庫之前取消轉(zhuǎn)義或避免對(duì)其進(jìn)行轉(zhuǎn)義。
如果是在 Laravel 框架下,一般不需要手動(dòng)處理此類轉(zhuǎn)義問題,因?yàn)?Eloquent ORM 在處理字符串時(shí)不會(huì)自動(dòng)進(jìn)行HTML實(shí)體編碼。但如果你確實(shí)遇到了這種情況,可以使用 PHP 的 html_entity_decode()
函數(shù)還原原始字符串
例子
$operation_code = html_entity_decode($name, ENT_QUOTES, 'UTF-8');
$data = [
'operation_seq_num' => $num,
'wip_entity_name' => $wip_entity_name,
'operation_code' => $operation_code,
'creation_date' => time(),
'begin_date' => time(),
'employee_num' => $employee_num,
'created_by' => $username
];
db::table('wip_production')->insert($data);
擴(kuò)展:
Thinkphp3.2如何處理大規(guī)模并發(fā)寫入問題
1.大規(guī)模并發(fā)寫入,出現(xiàn)數(shù)據(jù)庫鎖死,數(shù)據(jù)寫入失敗,數(shù)據(jù)表損壞等問題
2.鎖表需要配合事務(wù)使用
3.具體代碼如下
M()->startTrans();
$lot_check = M()->table('order')->lock(true)->where(['id' => $id])->field('id,type')->find();
$data = ['status'=>2];
$res = M()->save($data);
if($res)
{
M()->commit(); #提交事務(wù)
}else{
M()->rollback(); #回滾事務(wù)
}
4.采用的方法主要就是事務(wù)配合鎖表,解決大并發(fā)寫入問題
到此這篇關(guān)于thinkphp解決數(shù)據(jù)傳入數(shù)據(jù)庫中特殊字符的問題的文章就介紹到這了