php - 替换单引号以正确搜索数据库的最佳方法?

标签 php sql database web-applications validation

我正在开发一个应用程序,可以通过多种不同的条件搜索用户。可用的标准之一是按名称搜索。名称存储在数据库中,并且删除了 HTML 字符,例如。 a ' 存储为 '。这样做的问题是,如果用户输入常规英文名称按名称进行搜索,它会在数据库中查找英文名称而不是删除 HTML 的名称。我尝试过使用 htmlspecialchars($string, ENT_QUOTES),但由于某种原因,它并不总是正确替换单引号。谁能想到为什么会发生这种情况,或者推荐更好的方法?谢谢!

最佳答案

您不需要替换单引号。您需要做的就是使用 PDO MySQLi 扩展。 PDO 示例,

$stmt = $pdo->prepare('SELECT * FROM tableName WHERE name = :name');

$stmt->execute(array(':name' => $name));
foreach ($stmt as $row) 
{
    // do something with $row
}

这样,即使值有单引号,它也允许您进行搜索。

关于php - 替换单引号以正确搜索数据库的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12534561/

相关文章:

java - 重复使用数据库 session 进行多个查询?

php - Composer curl 错误 60 : SSL certificate problem: unable to get local issuer certificate

php - phps mb_ereg 函数是否可以安全使用(由于 ereg 被弃用)?

mysql - Sequelize - 自定义运算符

php - OR AND 的 Mysql 错误

database - Akka Actor : Handling DB Failures Without Losing Data

mysql - 如何让 sequelize.sync() 省略一些模型?

php - Android 和 Web - 需要解释

php - Symfony 4 Remember Me 不起作用,浏览器重启时 cookie 被破坏

sql - 跨服务器查询与 native 查询的开销是多少?