我有一个山脉数据库,其名称通常包含撇号,例如贝因·阿克罗因。我的所有搜索条件都工作正常,除非用户通过包含撇号的表单输入搜索,即 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/