我無法將長文本從表單保存到資料庫中。頁面加載并回傳而不保存或顯示錯誤。短文本正在保存。這是代碼:
HTML:
<textarea id="" name="text_01" style="width:80%; height:150px;">
</textarea>
PHP/SQL:
$_POST = filter_var($_POST, \FILTER_CALLBACK, ['options' => 'trim']);
if (isset($_POST['saveCover']) && !empty($_POST)) {
$data = $_POST;
if (empty($cover)) {
error_log("New Text insert. ");
$sql = "insert into tbl_text (id, text_01) values ($id, '".$data['text_01']."';
}
SQL(資料庫):
CREATE TABLE `tbl_text` (
`id` int(11) NOT NULL,
`text_01` text,
`created_at` datetime DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Project Cover Pages';
uj5u.com熱心網友回復:
您的查詢對注入開放。
我可以看到您使用 '(單引號)參考了文本,現在想象一下,如果輸入的文本包含任何單引號,那么它會破壞您的查詢,字串的長度/長度在這里不是問題。你也錯過了一個結束“(雙引號)
使用準備好的陳述句,從您的代碼中我不確定您在使用什么 - PDO 或 mysqli,相應地更新您的代碼以使用準備好的陳述句。此處出于測驗目的,使用 addlashes() 來檢查您是否可以保存長文本。
$sql = "insert into tbl_text (id, text_01) values ($id, '".addslashes($data['text_01'])."'";
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/324268.html
