我对涉及使用 PHP/MySql 的搜索表单的最佳实践有疑问
考虑以下:
- 用于搜索书名的搜索表单
- 对“自动建议”标题的 jQuery / AJAX 请求
- 需要逃跑怎么办?
连接到数据库的 mysql 用户目前只有该SELECT
权限,但我INSERT
将来可能会添加该权限(因此可能会注入)。
搜索表单很简单,例如:
<form id="search" method="GET" action="/search/">
<input type="text" value="" id="s" name="s" />
</form>
表单通过 GET 发送到search.php?s=Search Query
. 在那里,PHP 文件类似于以下内容:
<?php
$s = $_GET['s']; // the search request
$search = new Search($s); // creates new search object and sends the $s query
echo $search->output; // returns results
?>
我的搜索类有以下内容:
class Search {
// Database stuff omitted
$stmt->bindParam(':search', $this->query, PDO::PARAM_STR)
$stmt->execute;
$res = $stmt->fetchAll(PDO::FETCH_ASSOC);
$this->output = $res;
}
我的 sql 查询是这样的:SELECT booktitle FROM books WHERE booktitle LIKE '%:search%'
我可能会遇到什么问题?您对需要逃避什么以及在哪里逃避有什么建议吗?您是否发现我的设置存在潜在问题?sql注入等问题?