【发布时间】:2014-02-14 13:33:08
【问题描述】:
我在这里按名称搜索数据库中的用户。我有 preg_split() 寻找名字和姓氏之间的空格以将它们分开并分别搜索名称,但我想设置它,以便如果用户只输入第一个或最后一个,它将搜索输入的单个名称的“first_name”和“last_name”字段。 前任。 'Shannon Phillips' 会在 first_name 中搜索 Shannon,在 last_name 中搜索 Phillips,但如果我只输入 Phillips,我希望它同时在 first_name 和 last_name 中搜索 Phillips。我假设我只会查询数据库两次,并以某种方式将第二个查询的结果附加到第一个查询的末尾。
function nameProcess(){
if($_SESSION['search_engine_option'] == 'name'){
$name = preg_split("/[\s,]+/", $_SESSION['search_engine_input']);
if(empty($name['0'])){
$first = db_query('SELECT * FROM {tls_active_applicants} WHERE `first_name` = `'.$name['1'].'`');
$last = db_query('SELECT * FROM {tls_active_applicants} WHERE `last_name` = `'.$name['1'].'`');
}elseif(empty($name['1'])){
$first = db_query('SELECT * FROM {tls_active_applicants} WHERE `first_name` = `'.$name['0'].'`');
$last = db_query('SELECT * FROM {tls_active_applicants} WHERE `last_name` = `'.$name['0'].'`');
}
}
【问题讨论】:
-
噢。先生,您的问题远远超出了创建数组的功能方面。您的代码似乎很容易受到 sql 注入的影响,使用此代码的任何应用程序都将是不安全的,并且可能会破坏您的数据库。除此之外,您可能应该尝试将数据的检索与该数据的使用分开,通过单独的方法或函数来获取原始数据,然后再对其进行操作。