根据用户输入的MySQL创建SQL语句
Create SQL sentece according to users input MySQL
我想做的是:
首先有一个有5个输入的表单,例如:
Name:
Career:
Experience:
City:
Speciality:
我需要做的是根据填充的字段创建一个sql语句。如果只填充了2个字段,则创建一个只包含这些字段的sql。除了为每种可能性创建一个sql语句之外,我不知道如何做到这一点,这是一项相当广泛的工作。我读到我可以使用存储过程,但我又不知道该怎么做。请帮帮我!
很抱歉我没有详细说明这个问题。
这是我在mysql数据库中有不同表的交易
- 人
- person_id
- 名称
- last_name
- 人员_资源
- person_id
- 航向
- person_carrer
- person_id
- carrer
- 个人经验
- person_id
- 位置
- 体验description
- 经验_起始日期
- 经验_日期
所有这些表都通过foreign_key(person_id)与人员相关
然后我有一个页面,用户有6个不同的输入:
- 名称:
- last_name:
- 课程:
- 经验:(此字段从person_experience表中搜索位置和经验description)
- 古代:(必须获得所有人的经验总结)
用户必须根据他填写的字段获得结果。
我试着用"%%"创建一个复杂的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,它不会显示在结果中,所以我需要某种方法,正如我在第一时间所说,只需根据用户填写的输入在数据库中搜索。
例如,如果用户填写:
- carrer,经验:搜索所有有那个carrer和那个经验的人
- name:搜索所有人,即使他们没有carrer、课程或使用该名称的经验
PS:尝试为每个可能性创建一个sql语句会导致64个sql语句,我没有想过这么做!
感谢所有在方面的帮助
以下是可能有所帮助的内容:
$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
}
相关文章:
- 如何创建一个像SQL十进制类型一样匹配(p,s)精度和小数位数的正则表达式
- 从SQL中提取一个表来创建javascript数组
- 从sql server中用javascript创建HTML表
- 从经典 ASP 中的 SQL 数据集为高图表创建多个数组
- 无法在 Web SQL 数据库中创建新表
- 如何使用 jQuery 创建一个返回 SQL 结果集的函数
- 在 SQL 中创建架构的最佳方式
- 如何使用Javascript动态创建SQL SELECT请求,然后使用Ajax执行
- Oracle ApeX(PL/SQL)-从JavaScript变量创建Bind变量
- 使用ajax创建迭代SQL ' INSERT '语句
- Regexp在SQL创建表语句中匹配表名
- 是否存在创建SQL查询构建器接口的jQuery或JavaScript模块?
- 如何用javascript创建一个选择列表,并用php sql填充它
- HTML5 - Web SQL数据库文件存储和所有表创建的地方
- 如何创建一系列基于SQL树自动填充的JS/PHP下拉菜单?
- 我可以创建一个HTML5表单,直接发送答案到我的电子邮件,而不必使用PHP或SQL
- 如何从SQL SELECT查询的c#变量中创建jQuery数组
- 创建一个带有选择器的HTML表单一个保存SQL十六进制颜色的选择器
- 使用TypeScript创建新的sql.js数据库
- 根据用户输入的MySQL创建SQL语句