我最近创建了一个基本的PHP网页,它列出了从MySQL表中提取的信息,并以各种方式显示这些信息。我希望允许用户在不刷新页面的情况下向表中添加一个新项目,编辑列表中的一个项目,并删除列表中的某个项目(Ajax)。
目前正在进行
<a class="popup-button" title="<?php echo $row['comment']; ?>" onclick="setEdit('<?php if($row['comment']){ echo $row['comment']; } else { echo "Enter comment here..."; } ?>');"><?php echo $row['listitem']; ?></a>
function setEdit(editcomment)
{
if(editcomment){ document.getElementById('help-us-comment').value=editcomment; }
}
if(isset($_POST['comment_text']))
$comment=$_POST['comment_text'];
$sql = "INSERT INTO table SET
comment='$comment'";
问题:我在试图通过1、2、3获取数据库内容时遇到了持续的问题,而不会在新行、单引号或双引号处摔倒。我尝试了无数次替换标签、htmlspecialchar和nl2br的组合,但都没有成功——现在它已经到了如此复杂和编码/解码的地步,我认为我缺少一种更简单、更明显的方法。
当试图将数据加载到表单中时,会出现主要问题,通常情况下,要么表单发生故障,根本拒绝填充(通常是由于提取的数据断开了链接,即单引号或新行),要么表单中填充了特殊字符,而不是要编辑的纯文本。
我试着尽可能多地详细介绍,但如果需要更多,我很乐意提供。如果这是一个明显的修复/错误,我也很抱歉,我是个白痴。
这里有两个问题:存储和显示。
要显示,您应该查看htmlentities
,它使其成为安全的HTML(它为您执行所有引号替换、HTML编码等操作),这样您的字符串就可以安全地显示为纯文本或输入值。
要存储数据,您应该清理查询。您可以使用mysqli
和绑定参数,或者使用mysql_real_escape_string
手动转义输入。
否则,向Bobby Tables问好;)