TP5数组查询where封装

TP运算符SQL运算符例子实际查询条件
eq=$map[‘id’] = array(‘eq’,100);等效于:$map[‘id’] = 100;
neq!=$map[‘id’] = array(‘neq’,100);id != 100
gt>$map[‘id’] = array(‘gt’,100);id > 100
egt>=$map[‘id’] = array(‘egt’,100);id >= 100
lt<$map[‘id’] = array(‘lt’,100);id < 100
elt<=$map[‘id’] = array(‘elt’,100);id <= 100
likelike$map<‘username’> = array(‘like’,‘Admin%’);username like ‘Admin%’
betweenbetween and$map[‘id’] = array(‘between’,‘1,8’);id BETWEEN 1 AND 8
not betweennot between and$map[‘id’] = array(‘not between’,‘1,8’);id NOT BETWEEN 1 AND 8
inin$map[‘id’] = array(‘in’,‘1,5,8’);id in(1,5,8)
not innot in$map[‘id’] = array(‘not in’,‘1,5,8’);id not in(1,5,8)
and(默认)and$map[‘id’] = array(array(‘gt’,1),array(‘lt’,10));(id > 1) AND (id < 10)
oror$map[‘id’] = array(array(‘gt’,3),array(‘lt’,10), ‘or’);(id > 3) OR (id < 10)
xor(异或)xor两个输入中只有一个是true时,结果为true,不然为false,例子略。
exp综合表达式$map[‘id’] = array(‘exp’,‘in(1,3,8)’);$map[‘id’] = array(‘in’,‘1,3,8’);
### 如何在SQL查询语句中正确使用占位符 #### 使用问号 `?` 占位符 在构建SQL查询时,为了提高安全性和效率,通常会采用预处理语句的方式。这种方式通过使用占位符来替代实际的数据值,从而避免了直接嵌入变量可能带来的SQL注入风险。 对于Java环境下的JDBC操作而言,在准备执行带有参数的SQL命令时,可以利用`PreparedStatement`对象并配合`?`作为位置标记来进行设置: ```java String sql = "SELECT * FROM user_login WHERE user_password=? AND (user_name=? OR user_telNumber=?)"; try { PreparedStatement pstmt = connection.prepareStatement(sql); pstmt.setString(1, password); // 设置第一个参数 pstmt.setString(2, userName); // 设置第二个参数 pstmt.setString(3, telNumber); // 设置第三个参数 } catch (SQLException e) { e.printStackTrace(); } ``` 上述代码展示了如何创建一个包含三个未知数的查询,并依次指定这些未知部分的具体内容[^1]。 #### 利用通配符 `%` 和下划线 `_` 除了简单的替换外,有时还需要更复杂的匹配模式。此时就可以借助于LIKE关键字以及特殊的字符组合——百分号(`%`)代表任意数量字符;而单个下划线(`_`)则对应单一字符的位置。例如: ```sql SELECT * FROM table_name WHERE column_name LIKE '_a%' ``` 这条指令将会返回所有符合条件记录:即列column_name的第一个字母不是'a',但是紧接着有一个'a'后面跟随零个或多个其他字符的情况[^2]。 #### PHP 中的数组绑定方式 当涉及到PHP框架如ThinkPHP时,则可以通过传递关联数组的形式完成相同的功能。下面的例子说明了怎样只传入ID值就能获取相应的数据条目: ```php $result = Db::query('select * from tp_data where id = ?', [3]); ``` 这里的关键在于将待查找的目标封装成列表形式提供给API函数调用[^3]。 #### Python 下Pymysql库的应用场景 Python开发者如果想要实现相似的效果,那么pymysql是一个不错的选择之一。它允许用户按照索引来指派各个输入项之前先做必要的清理工作(比如转义特殊符号),然后再组装最终要发送出去的消息体: ```python import pymysql.cursors connection = pymysql.connect(host='localhost', user='root', passwd='', db='testdb') with connection.cursor() as cursor: value = conditions[i + 1].replace("'", "\\'") # 对字符串内的撇号进行转义处理 ... ``` 这段脚本片段体现了对潜在危险字符的有效防护措施[^4]。 #### Java中的格式化字符串与%s占位符 值得注意的是,在某些情况下,可能会看到类似于C语言printf风格的语法被应用于非SQL上下文中。然而需要注意的是这种做法并不适用于真正的数据库交互过程之中。相反地,这更多是用来构造普通的文本串而非用于动态生成SQL表达式的手段: ```java String url = "我的名字是%s,今年%s岁。"; String name = "小李"; int age = 22; url = String.format(url, name, age); System.out.println(url); ``` 此段程序仅展示了一种基于模板填充固定结构信息的方法,并不适合用来编写涉及敏感数据传输的安全型应用逻辑[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是誰萆微了承諾

你的鼓励是对我最大的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值