gpt4 book ai didi

php - 检索带引号的结果时的mySQL问题

转载 作者:太空宇宙 更新时间:2023-11-03 11:15:36 25 4
gpt4 key购买 nike

我在 PHP 页面上遇到 SQL 查询问题。

我是 php 的新手,所以坚持下去。

我已经成功地创建了一个查询来选择所有内容,但我想在查询中包含一个 WHERE。问题是结果包含引号,因为它是 html 代码。

我确信这很简单,但任何人都可以帮助...下面的问题代码:

$result = mysql_query("SELECT * FROM myTable WHERE text = '<span class="myclass">Here is my text</span>'");

最佳答案

简答

转义引号:

$result = mysql_query("SELECT * FROM myTable WHERE text = '<span class=\"myclass\">Here is my text</span>'");

正确答案

您几乎肯定会动态构建此查询(即字符串 <span class=\"myclass\">Here is my text</span> 在变量中,我们称它为 $searchTerm )。

永远不要在没有先转义变量内容的情况下使用嵌入变量执行 SQL 查询。这不仅可以防止此类问题,还可以防止针对您的应用程序的 SQL 注入(inject)攻击。

假设 $searchTerm变量如上所述,正确的方法是:

$query = sprintf('SELECT * FROM myTable WHERE text = \'%s\'',
mysql_real_escape_string($searchTerm));
$result = mysql_query($query);

完全正确的答案

使用 PHP 的 PDO 扩展,它可以轻松访问此功能(阅读变量绑定(bind))并且也是 100% 安全的(mysql_real_escape_string 不是——但主题太过分了高级在这里讨论)。

关于php - 检索带引号的结果时的mySQL问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5282647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com