我想做的是:
首先有一个有5个输入的表单,例如:
Name:
Career:
Experience:
City:
Speciality:
我需要做的是根据填充的字段创建 sql 句子。如果只填充了2个字段,则创建仅包含这些字段的sql。除了为每种可能性创建一个sql语句之外,我不知道如何做到这一点,结果证明这是一个非常广泛的工作。我读到我可以使用商店程序,但我不知道我会怎么做。请帮帮我!
这是我在mysql数据库中有不同表格的交易
所有这些表都通过foreign_key(person_id)与人相关
然后我有一个页面,用户有6个不同的输入:
用户必须根据他填写的字段获取结果。
我尝试做的是使用“%%”创建一个复杂的SQL句子,如下所示
select a.person_id, b.name, c.last_name, d.courses, f.experience, g.antiquity
from person a,
(
'SQL SENTENCE' WHERE NAME LIKE "%%"
) b,
(
'SQL SENTENCE' WHERE LAST_NAME LIKE "%%"
) c,
(
'SQL SENTENCE' WHERE COURSE LIKE "%%" GROUP BY PERSON_ID
) d,
(
'SQL SENTENCE' WHERE POSITION LIKE "%%" OR EXPERIENCE_DESCRIPTION LIKE "%%"
GROUP BY PERSON_ID
) f,
(
'SQL SENTECE'
WHERE 'SUMATORY OF ALL PERSON EXPERIENCE, (TO_DATE - FROM_DATE)/365 '>=0 (THIS ZERO WOULD CHANGE IF USER FILLS INPUT ANTIQUITY)
GROUP BY PERSON_ID
) g
WHERE a.person_id = b.person_id and c.person_id = b.person_id and d.person_id = c.person_id and f.person_id = d.person_id and g.person_id = f.person_id
如果用户填写任何字段,我只是将值放在'%value%'之间,这样我得到的结果,我得到这个sql句子的结果,但问题是,如果一个人没有结果中没有显示经验或者carrer,所以我需要一些,正如我在第一时间说的那样,只需根据用户填写的输入在数据库中搜索。
例如,如果用户填写:
PS:尝试为每个可能性创建一个sql sentece将导致64个sql的感觉,我不会考虑这样做!
感谢所有提前帮助
答案 0 :(得分:1)
这可能有所帮助:
$sql = array(); // initialize empty array for data
foreach(array("name", "career", "experience", "city", "speciality") as $key) { // iterate all the form controls
if(!empty($value = trim($_POST[$key]))) {
// the form input is filled, so we add it to data array (with proper escaping)
$sql["`".$key."`"] = "'".mysqli_real_escape_string($value)."'";
}
}
if(count($sql)) { // only if user had provided some data
// generate the final SQL statement
$sql = "INSERT INTO `table` ("
.implode(", ", array_keys($sql)).") VALUES (" // for example (`name`, `career`)
.implode(", ", array_values($sql)) . ")"; // for example ('Foo', 'Bar')
} else {
// no informations provided
}