php - 无法使用预准备语句将链接插入 MySql

标签 php mysql sql html

我创建了一个表单,它将数据插入 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>等都按原样显示,这就是我想要的。

所以,每当我插入 and <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));

关于php - 无法使用预准备语句将链接插入 MySql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14053777/

相关文章:

php - 如果 id 尚不存在,则 SQL 仅将新行插入 MYSQL 表

php - CakePHP:将DisplayField设置为虚拟字段

javascript - 删除确认 HREF Sweet Alert

php - 列计数与第 1 行的值计数不匹配 - PHP、MySql

mysql - 如果列值为 null MySQL,如何返回特定字符串

sql - 将具有多个多对多关系的模式重构为语义不同但结构相似的实体?

sql - oracle中的pctincrease是什么?创建表空间时如何分配、调整大小和自动扩展内存

php - 如何使用 PHP 创建适用于 iOS 的 Web 服务?

php - 关联DB id的Mysql

php - 使用分号作为分隔符从 MySQL 表使用 PHP 创建 csv 输出