【问题标题】:Value after apostrophe is not selected from database撇号后的值未从数据库中选择
【发布时间】:2018-03-30 06:15:52
【问题描述】:

我使用addslashes() 使用PHP 在数据库中插入带有撇号的数据。 这行得通。

但是当我想选择此数据并将其显示在下拉列表中时,它会在下拉选项中显示正确的值,但是当我选择并使用此值时,它仅显示撇号之前的值,忽略撇号之后的值。

这是我的代码和查询 insert 和 select : 插入:

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>";
}

【问题讨论】:

  • 请查看parameterized queries
  • @McAden 我觉得解决我的问题没有用。我想你误解了我想说的意思

标签: php database phpmyadmin


【解决方案1】:

在 HTML 中添加和删除斜线对您没有帮助。您需要去掉 inputhtml encode 中的引号。

类似这样的:

echo "<option value='" . htmlentities($r[0], ENT_QUOTES) . "'> $r[0] </option>";

此外,请研究 parameterized queries,因为在您的 SQL 语句中调用 addslashesnot sufficient 以清理用户输入,这会使您容易受到 SQL 注入的攻击。

【讨论】:

    【解决方案2】:

    我认为删除 stripslashes 功能会有所帮助。由于 stripslashes 会从字符串中删除斜杠,这会使编译器感到困惑。

    例子:字符串是“it's me”,所以代码变成:

    echo "<option value='it's me'> $r[0] </option>";
    

    这会导致撇号之前的唯一字符串。

    希望对您有所帮助。

    【讨论】:

    • 我尝试了你的建议,我删除了 stripslashes() 但没有工作。它只在撇号前取一个值,就像不是 it's me 而是只取 " " it "。
    猜你喜欢
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-15
    相关资源
    最近更新 更多