将链接作为href标记插入数据库



我在数据库中插入链接时遇到问题。我通过几个条件生成链接,但最终,当我试图在数据库中插入链接时,我遇到了一个错误。

此外,我从数据库中提取一个描述,然后将这些链接添加到现有描述中,然后更新值。

$parent_path = 'https://sitename.com/game/'.$parentSlug;
$parentLink = '<a href="'.$parent_path.'">'.$parentName.'</a>';

$child_path = 'https://sitename.com/game/'.$slug;
$childLink = '<a href="'.$child_path.'">'.$name.'</a>'; 

在脚本运行期间,我遇到了几个错误

未捕获的PDOException:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;查看与您的MariaDB服务器版本相对应的手册,以获得正确的语法。附近还有CBD教育部分,可以帮助您在做出…时做出最佳决策

$sql = "SELECT * FROM `wpdev_postmeta` where post_id = $post_id  and meta_key = 'test'";
$q = $conn->query($sql);

while($r = $q -> fetch()){ 
$description = $r['meta_value']; 
}

$description可以包含";a href标记";,当我回显它时,它变成了一个可点击的链接,无法更新数据库中的字段。

$desc = $description.'<br/>'.$parentLink.$childLink;
$stmt = "UPDATE wpdev_postmeta SET  meta_value = '$desc' WHERE meta_key  = 'test' and post_id = $post_id ";

if ($conn->query($stmt)) {
echo "Record updated successfully". '<br/>';
} else {
echo "Error updating record: " . '<br/>';
}

为了将来参考,我是否需要先从数据库中获取数据,然后再将其与新的更新一起发送,以防我不想丢失之前插入的内容?我在谷歌上搜索,但找不到合适的答案。

如果需要将HTML保存到数据库,可以使用两种不同的

  1. 使用准备好的语句。查找PDO或MySLi
  2. 例如通过htmlentitieshtmlspecialchars对所有标签和其他特殊符号进行编码

htmlentities:示例

<?php
$link = '<a href="https://stackoverflow.com/">Check that</a>';
echo(htmlentities($link, ENT_QUOTES|ENT_HTML5));
// output:
/*
&lt;a href&equals;&quot;https&colon;&sol;&sol;stackoverflow&period;com&sol;&quot;&gt;Check that&lt;&sol;a&gt;
*/
?>

使用html_entity_decode解码为HTML

<?php
$encoded = '&lt;a href&equals;&quot;https&colon;&sol;&sol;stackoverflow&period;com&sol;&quot;&gt;Check that&lt;&sol;a&gt;';
echo(html_entity_decode($encoded, ENT_QUOTES|ENT_HTML5));
// output
/*
<a href="https://stackoverflow.com/">Check that</a>
*/
?>

htmlspecialchars:示例

<?php
$link = '<a href="https://stackoverflow.com/">Check that</a>';
echo(htmlspecialchars($link, ENT_QUOTES|ENT_HTML5));
// output
/*
&lt;a href=&quot;https://stackoverflow.com/&quot;&gt;Check that&lt;/a&gt;
*/
?>

用于从htmlspecialchars:解码

<?php
$encoded = '&lt;a href=&quot;https://stackoverflow.com/&quot;&gt;Check that&lt;/a&gt;';
echo(htmlspecialchars_decode($encoded, ENT_QUOTES|ENT_HTML5));
// output
/*
<a href="https://stackoverflow.com/">Check that</a>
*/
?>

最新更新