我創建了一個表單,它將數據插入MySQL數據庫。這裏是表單字段,它們是<form>
的一部分,但是,我沒有在這裏顯示整個表單,只是創建問題的字段。無法使用準備聲明將鏈接插入到MySql中
<tr> <td>Top 728x90 As</td><td><textarea name='topad'><?=$r['topad']?></textarea></td</tr>
<tr> <td>Sidebar 250x250 Ad</td><td><textarea name='sidebarad'><?=$r['sidebarad']?></textarea></td></tr>
這部分代碼處理輸入並將其插入到數據庫中。
if(isset($_POST['submit'])) {
$topad = $_POST['topad'];
$sidebarad = $_POST['sidebarad'];
$update = $connection->prepare("UPDATE site SET topad = '$topad' , sidebarad = '$sidebarad' WHERE id=1");
$update->execute(array());
}
與此代碼的問題是,它不接受/處理涉及<a href="#">
& </a>
碼的數據的一部分。這不是關於轉義HTML字符,因爲所有其他HTML標記,如<img>
等都顯示爲它,這是我想要的。
因此,無論何時插入標籤,它都會消失,既不會插入數據庫,也不會在按下提交按鈕後顯示在表單中。
更新:當使用雙引號插入鏈接時,它將被接受。如果我使用單引號,則不處理。例如。 <a href="someurl">
將被DB接受,而<a href='someurl'>
不會。
爲什麼會發生此錯誤?
這是因爲您使用錯誤的方法來替代變量。你應該使用'placeholder'並綁定參數 –
爲什麼你沒有佔位符準備它。這與SQL注入一樣容易受到任何未經處理的查詢的影響。在嘗試使用數據庫做東西之前,請閱讀[這篇文章](http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers):) – PeeHaa
如何在更新數據庫時使用bind param?如何使用佔位符進行準備? – Rohitink