我最近把一个基本的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获取数据库内容,而不会在新行,单引号或双引号中出现问题。我已经尝试了无穷无尽的替换标签,htmlspecialchars和nl2br的组合,没有成功的一半 - 现在它已经达到了如此复杂和编码/解码的程度,我现在假设我有一个更简单明了的方式我失踪了。
当尝试将数据加载到表单中时会发生主要问题,通常表单中的表单会丢失并完全拒绝填充(通常是链接被提取的数据破坏,即单引号或新行)或表单中填充了特殊字符而不是纯文本进行编辑。
我试图尽可能多地详细说明,但如果需要更多细节,我很乐意提供。如果这是一个明显的修复/错误,我也是道歉。我是个白痴。
答案 0 :(得分:0)
这里有两个问题:存储和显示。
要显示,您应该htmlentities
查看makes it safe HTML(它会为您更新所有引号,html编码等),以便您的字符串可以安全地显示为纯文本,或作为输入的价值。
要存储数据,您应该清理查询。您可以使用mysqli
和bind parameters,或使用mysql_real_escape_string
手动转义输入。