我的 php 脚本应该搜索客户端数据库,它运行良好,一切都很好,除非数据库中的客户端名称以数字开头(该列的格式为 Varchar(255))。
if(isset($_GET['search'])) {
$searchVal = "%" . $_GET['search'] . "%";
}
是我抓取它的方式,我认为值得一提,因为网站另一端的自动完成功能工作得很好,它使用 $_POST 发送数据(我们想使用 $_GET 以便网站访问者可以导航) .
$query = "SELECT DISTINCT clients.client_id,
clients.logoFileName,
clients.clientName,
clients.streetAddress,
clients.city,
clients.state,
clients.zip,
clients.latitude,
clients.longitude
FROM clients
INNER JOIN clientData
ON clients.client_id = clientData.client_id
WHERE clients.clientName LIKE ? AND clients.city LIKE ?
OR clientData.clientCategory LIKE ? AND clients.city LIKE ?
OR clientData.term LIKE ? AND clients.city LIKE ?";
//setup
$stmt->prepare($query);
$stmt->bind_param('ssssss',$searchVal,$cityVal,$searchVal,$cityVal,$searchVal,$cityVal);
所以这个搜索对于 99% 的搜索运行得很好(我们列出了大约 1000 个客户,这仅适用于以数字开头的 10 个)。
因此,如果我要搜索“UPS Store 1840”,我可以搜索“UPS”、“Store”或“1840”,它会返回它们。但如果我搜索“14 Candles”,“14”或“Candles”都不会返回任何结果。
如果我在 PHPMyAdmin 中搜索相同的信息,则会发生相同的结果(编辑:嗯,它给出了“返回 0 行”,而不是完全错误)。但是,就像我说的那样,使用 $_POST 的查询工作得很好,并且使用了字面上相同的代码(访问类似的搜索,但提取的数据更少并且有一个限制)。
它肯定是在 MYSQL 中弹出一个错误,所以它与正在发送的信息有关,这让我认为通过 $_POST 发送的格式与 $_GET 不同。
我做错了什么,我该如何解决?