我正在查询mysql数据库以从一个表返回作业,而从另一个表返回作业元数据。我有一个带有两个输入的表单,一个是title
,第二个是location
,因此用户可以查询标题或位置,或同时查询两者。当我输入title
输入并将location
留为空白时,我会高效地检索结果,但是当我也输入后一个输入时,只会再次检索相同的结果而没有任何变化。当我清空之前的输入时,我会收到意外的结果。表中的作业总数为460+,我检索的结果为数千,当我检查接收到的json对象时,所有数据都在460+之后重复,然后从头到尾,依此类推。我不知道怎么了。
我的基本需求是查询数据库并获得既没有输入又没有空的结果。
表格
<form action="" id="search_form">
<input type="text" class="job-search-inp job-title-inp" autocomplete="off" name="job_title" placeholder="Job Title, Company name">
<input type="text" class="job-search-inp job-type-inp" autocomplete="off" name="job_loc" placeholder="City or Country . . . ">
<button type="submit" id="submit_btn"> <i class="fas fa-search"></i> </button>
</form>
客户端
var searchForm = document.querySelector("#search_form");
searchForm.addEventListener("submit", function(e) {
e.preventDefault();
var json = new Globals().toJSONString(this);
fetch("/fetch_jobs", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: json
}).then(function(t) {
t.text().then(function(res) {
console.log(JSON.parse(res));
populateJobs(JSON.parse(res));
})
})
})
带有查询的服务器端脚本
app.post("/fetch_jobs", function(req, res) {
new AccessAPI(req.body, res).retData();
})
function AccessAPI(data, response) {
this.retData = function() {
console.log(data['job_title'], data['job_loc']);
ms_connect.query("
SELECT `companies_jobs`.*
, `companies`.`name`
, `companies`.`location`
, `companies`.`image`
FROM `companies`
, `companies_jobs`
WHERE `companies_jobs`.`comp_fk` = `companies`.`id`
AND CONVERT(`companies_jobs`.`job_title` USING utf8) LIKE '%" + data['job_title'] + "%'
OR CONVERT(`companies_jobs`.`job_loc` USING utf8) LIKE '" + data['job_title'] + "%' "
, function(err, rows) {
if (err) {
throw err;
} else {
response.send(rows);
}
})
}
}