栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

根据输入调整函数中的sql语句

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

根据输入调整函数中的sql语句

这个想法是您在代码中使用条件逻辑来根据需要收集与您的应用程序输入相对应的术语。然后,以产生正确的SQL表达式的方式将它们连接在一起。

它确实需要一些应用程序功能来动态构建SQL表达式,并且有一些技巧可以使其尽可能简洁。如果确实有很多可能的搜索词,则可能会得到冗长的功能。但猜猜怎么了?如果您有复杂的输入,则需要复杂的代码来处理它们就不足为奇了。


发表您的评论:

url.com?location=gb&color=3&hair=4

好的,您最多有三个输入,并且您必须根据这些输入动态构建一个SQL查询。让我们从头开始,然后倒退。最终,您需要这样的SQL表达式:

WHERe (location = 'gb') AND (color = 3) AND (hair = 4)

如果您有一个包含三个术语的数组,则可以使用

implode()
函数在PHP中将它们连接在一起。但是您可能也少于三个。您可以通过将数组中包含的多个术语放入
AND
每个术语之间来处理它们,从而处理任意数量的术语:

$where_array = array(        "(location = 'gb')",        "(color = 3)",        "(hair = 4)"    );$where_expr = "WHERe " . implode(" AND ", $where_array);

那么如何使用这些术语创建数组?通过为应用程序当前请求中存在的每个输入编写有条件地附加到数组的代码,请执行以下操作:

$where_array = array();if (array_key_exists("location", $_GET)) {    $location = mysql_real_escape_string($_GET["location"]);    $where_array[] = "(location = '$location')";}if (array_key_exists("color", $_GET)) {    $color = mysql_real_escape_string($_GET["color"]);    $where_array[] = "(color = '$color')";}if (array_key_exists("hair" $_GET)) {    $hair = mysql_real_escape_string($_GET["hair"]);    $where_array[] = "(hair = '$hair')";}

完成所有这些之后,您的数组将包含零到三个元素。如果它具有一个或多个,则要生成一个

WHERe
如前所示的子句,否则请跳过它。

$where_expr = '';if ($where_array) {    $where_expr = "WHERe " . implode(" AND ", $where_array);}

然后将追加

$where_expr
到您的基准SQL查询中。

$sql .= $where_expr

有关的内容

$params
是查询参数,这是将动态值包含在SQL表达式中的替代方法,而不是
mysql_real_escape_string()
。它不是强制性的(事实上,PHP的旧mysql扩展不支持查询参数),但是我建议切换到PDO,以便可以使用此功能。请参阅此处的示例:
PDO::prepare()



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/441362.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号