我使用addslashes()在数据库中使用PHP插入带有撇号的数据。 这很有效。
但是当我想选择这些数据并在下拉列表中显示时,它会在下拉选项中显示正确的值,但是当我选择并使用此值时,它仅显示撇号之后的值,而忽略撇号值。
这是我的插入和选择的代码和查询: 插入:
INSERT INTO `all_item_list` VALUES ('','".addslashes($t2)."','$t3')
选择:
$qu="Select DISTINCT Item_Name from all_item_list";
$res=mysqli_query($con,$qu);
while($r=mysqli_fetch_row($res))
{
echo "<option value='".stripslashes($r[0])."'> $r[0] </option>";
}
答案 0 :(得分:0)
删除stripslashes函数会有所帮助,我想。由于stripslashes会从字符串中删除斜杠,这会让编译器感到困惑。
示例:字符串是“它是我”,因此代码变为:
echo "<option value='it's me'> $r[0] </option>";
导致撇号之前唯一的字符串。
希望得到这个帮助。
答案 1 :(得分:0)
添加和删除斜杠不会对HTML有所帮助。您需要在input
或html encode中删除引号。
这样的事情:
echo "<option value='" . htmlentities($r[0], ENT_QUOTES) . "'> $r[0] </option>";
此外,请研究parameterized queries,因为在您的SQL语句中调用addslashes
是not sufficient来清理用户输入,并且会让您容易受到SQL注入攻击。