PHP搜索查询
我试图搜索一个CVs应用程序,它存储在许多表中,我试图找到一个包含特定信息的简历,如学历和教育 因此,我已通过POST发送了搜索条件: 但这些声明带来了所有具有19个或5个或13个学历的简历 这是我的代码:PHP搜索查询,php,mysql,sql,Php,Mysql,Sql,我试图搜索一个CVs应用程序,它存储在许多表中,我试图找到一个包含特定信息的简历,如学历和教育 因此,我已通过POST发送了搜索条件: 但这些声明带来了所有具有19个或5个或13个学历的简历 这是我的代码: $keys = array_keys($_POST); $found = array(); foreach ($keys as $key) { $found[$key] = DataBase::query("SELECT * FROM cv_" . $key .
$keys = array_keys($_POST);
$found = array();
foreach ($keys as $key) {
$found[$key] = DataBase::query("SELECT * FROM cv_" . $key . " WHERE " . $key . "_id IN (?)", array($_POST[$key]));
}
echo count($found)."\n";
print_r($found)."\n";
尝试按单个查询
假设两个表都使用一个公共的resume_id,您可以使用该id将表连接到一个查询中,该查询将:
SELECT * FROM cv_qualifications q
JOIN cv_educations e ON e.resume_id = q.resume_id
where q.qualifications_id IN (5,19)
and e.educations_id IN (13)
本例中的SELECT*仅从cv_资格中检索,如果您需要两个表中的字段,可以用SELECT q.*和e.*替换…查看以下内容:-
SELECT * FROM cv_qualifications q
JOIN cv_educations e ON e.resume_id = q.resume_id
where (q.qualifications_id = '5'
or q.qualifications_id = '9')
and e.educations_id = '13'"
连接这两个表,然后根据需要执行where子句。您也不应该执行多次do1execution并动态构建查询。
$keys = array_keys($_POST);
$found = array();
foreach ($keys as $key) {
$found[$key] = DataBase::query("SELECT * FROM cv_" . $key . " WHERE " . $key . "_id IN (?)", array($_POST[$key]));
}
echo count($found)."\n";
print_r($found)."\n";
select * FROM cv_qualifications as cq
INNER JOIN cv_educations as ce ON cq.resume_id=ce.resume_id
WHERE cq.qualifications_id IN (19,5) and ce.educations_id IN (13);
SELECT * FROM cv_qualifications q
JOIN cv_educations e ON e.resume_id = q.resume_id
where q.qualifications_id IN (5,19)
and e.educations_id IN (13)
SELECT * FROM cv_qualifications q
JOIN cv_educations e ON e.resume_id = q.resume_id
where (q.qualifications_id = '5'
or q.qualifications_id = '9')
and e.educations_id = '13'"