使用字符串条件的时候,建议配合预处理机制,确保更加安全,例如:
$Model->where("id=%d and username='%s' and xx='%f'",array($id,$username,$xx))->select();
如果$id变量来自用户提交或者URL地址的话,如果传入的是非数字类型,则会强制格式化为数字格式后进行查询操作。
字符串预处理格式类型支持指定数字、字符串等,具体可以参考vsprintf方法的参数说明。
vsprintf() 函数把格式化字符串写入变量中。
与 sprintf() 不同,vsprintf() 中的参数位于数组中。数组元素将被插入到主字符串中的百分号(%)符号处。该函数是逐步执行的。在第一个 % 符号处,插入第一个数组元素,在第二个 % 符号处,插入第二个数组元素,依此类推。
注释:如果 % 符号多于 arg 参数,则您必须使用占位符。占位符被插入到 % 符号之后,由数字和 "\$" 组成。
vsprintf(format,argarray)
%% - 返回一个百分号 %
%b - 二进制数
%c - ASCII 值对应的字符
%d - 包含正负号的十进制数(负数、0、正数)
%e - 使用小写的科学计数法(例如 1.2e+2)
%E - 使用大写的科学计数法(例如 1.2E+2)
%u - 不包含正负号的十进制数(大于等于 0)
%f - 浮点数(本地设置)
%F - 浮点数(非本地设置)
%g - 较短的 %e 和 %f
%G - 较短的 %E 和 %f
%o - 八进制数
%s - 字符串
%x - 十六进制数(小写字母)
%X - 十六进制数(大写字母)
<?php $num1 = 123; $num2 = 456; $txt = vsprintf("%f%f",array($num1,$num2)); echo $txt; ?>
运行结果:http://tool.apizl.com/dev/runCode/ec990300a7b76f876211f51245f8f21e.html
相关文章
- thinkphp where中or多个like模糊搜索
- ThinkPHP(TP) where多条件查询
- thinkphp将php session存入MySQL过程
- phpHeaderHTTP状态码和常用返回头集合大全
- thinkphp3.2获取当前操作的模块名控制器方法名称_编程资料分享
- thinkphp 重写警告提示
- thinkphp Apache和nginx伪静态重写规则
- PHP curl get https请求方法
- PHP通过http post发送json数据
- PHP5.6接口报错提示 Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version