這篇文章主要介紹了thinkphp解決數據傳入數據庫中特殊字符的問題,為了解決這個問題,你需要確保在插入數據庫之前,不對文本內容進行HTML實體編碼,需要的朋友可以參考下
GPT4.0+Midjourney繪畫+國內大模型 會員永久免費使用!
【 如果你想靠AI翻身,你先需要一個靠譜的工具! 】
thinkphp解決數據傳入數據庫中特殊字符的問題
為了解決這個問題,你需要確保在插入數據庫之前,不對文本內容進行HTML實體編碼。如果你是從前端獲取的數據,檢查是否在發送請求前使用 htmlspecialchars()
或類似方法進行了轉義。如果是后端處理邏輯導致的轉義,那么在插入數據庫之前取消轉義或避免對其進行轉義。
如果是在 Laravel 框架下,一般不需要手動處理此類轉義問題,因為 Eloquent ORM 在處理字符串時不會自動進行HTML實體編碼。但如果你確實遇到了這種情況,可以使用 PHP 的 html_entity_decode()
函數還原原始字符串
例子
$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);
擴展:
Thinkphp3.2如何處理大規模并發寫入問題
1.大規模并發寫入,出現數據庫鎖死,數據寫入失敗,數據表損壞等問題
2.鎖表需要配合事務使用
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(); #提交事務
}else{
M()->rollback(); #回滾事務
}
4.采用的方法主要就是事務配合鎖表,解決大并發寫入問題
到此這篇關于thinkphp解決數據傳入數據庫中特殊字符的問題的文章就介紹到這了