[英]Can Not Insert Link into MySql using Prepared Statement
我已经创建了一个表单,该表单将数据插入到MySQL数据库中。 这是表单字段,它们是<form>
一部分,但是,我没有在此处显示整个表单,而只是在显示问题。
<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>
标记,它就会消失,既不会插入数据库,也不会在按下提交按钮后显示在表单中。
更新:使用双引号插入链接时,它会被接受。 如果我使用单引号,则不会处理。 如<a href="someurl">
将在数据库中被接受,而<a href='someurl'>
不会。
为什么会发生此错误?
原因是因为您使用的是预处理语句,但未对值进行参数化。 试试下面,
$topad = $_POST['topad'];
$sidebarad = $_POST['sidebarad'];
$update = $connection->prepare("UPDATE site SET topad = :topad , sidebarad = :sidebarad WHERE id=1");
$update->execute(array(':topad' => $topad, ':sidebarad' => $sidebarad));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.