Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP搜索查询_Php_Mysql_Sql - Fatal编程技术网

PHP搜索查询

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 .

我试图搜索一个CVs应用程序,它存储在许多表中,我试图找到一个包含特定信息的简历,如学历和教育

因此,我已通过POST发送了搜索条件:

但这些声明带来了所有具有19个或5个或13个学历的简历

这是我的代码:

$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'"