mysql - SQL - 当用户表单输入搜索条件包含撇号时,数据库搜索会出错

标签 mysql sql database

我有一个山脉数据库,其名称通常包含撇号,例如贝因·阿克罗因。我的所有搜索条件都工作正常,除非用户通过包含撇号的表单输入搜索,即 Beinn A'Chroin,然后它会抛出错误 - Beinn A 可以工作,Chroin 可以工作,但永远不会使用撇号。由于大多数用户总是会插入正确的名称,包括撇号,我希望始终将其放在表数据中 - 感谢您的帮助 - 谢谢约翰

我的代码的相关部分是:

$srch = $_POST['srch'];


// Prepare  query 

// Named Mountain Search Search for:



if ($srch != '') { //Options for specific walk types in a specific area selected

    $query = "SELECT walk, status, distance, report, dateofwalk FROM walkslist WHERE walk LIKE '%$srch%' ORDER BY walk ASC;";

最佳答案

使用PDO更新您的代码

try {
    $conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);

    $sql = 'SELECT walk, status, distance, report, dateofwalk 
FROM walkslist WHERE walk LIKE ? ORDER BY walk ASC;';

    $q = $conn->prepare($sql);
    $q->execute(array('%$srch%'));
    $q->setFetchMode(PDO::FETCH_ASSOC);

    while ($r = $q->fetch()) {

    }
} catch (PDOException $pe) {
    die("Could not connect to the database $dbname :" . $pe->getMessage());
}

关于mysql - SQL - 当用户表单输入搜索条件包含撇号时,数据库搜索会出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33995785/

相关文章:

mysql - 编写不使用联接并使用子查询的查询

sql - Postgres : Only return results that do not have letters

sql - Select 语句不适用于 Oracle 中的双引号

MySQL SELECT 仅从具有 DATETIME 的行中选择 AVAILABLE 月份

mysql - Mysql索引表查询慢

恢复后的MySQL二进制日志

mysql - 使用 NOT NULL 创建列时默认为 NULL 列

database - 分类数据的回归模型

MySQL查询查找两站之间的火车

sql - 在更新记录时锁定记录的最佳方法是什么?