PHP函数:sprintf 拼接sql语句

sprintf 在php中是一个函数,最近发现这个函数其实挺好用的,比如在拼接sql语句上

简单常用的有%u ,和%s,其中%u 是自然整数 ,包括0,1,2...

 

例如有一条 select * from users where user_id in (1,2,3,6,7);

 

而我们接受到的参数是一个 数组 [1,2,3,6,7];

 

我们可以这样写sql

<?php
$userIds = [1,2,3,6,7];

$sql = sprintf("select * from users where user_id in (%s)",explode($userIds));
echo $sql;die;

再举个例子,比如一个比较复杂的sql,日期如果在语句里,可能拼接起来眼都花了,可以用 sprintf

就可以方便一下,不用去看花眼拼接sql

<?php
$startDate = '1980-01-01';
$endDate = '2030-10-11';
$sql = sprintf("select relate_id as id ,title,max(a.created_at) last_report_time ,count(1) report_total_times  from reports a  
                         join archives b on a.relate_id = b.id where a.created_at > '%s' and a.created_at < '%s' and  a.type = 'Article' and is_handle = 0   
                         group by relate_id  order by report_total_times desc ,last_report_time desc ",$startDate,$endDate);

echo $sql;die;

 

再来一个小彩蛋

 

php ,str_pad    这个函数可以拼接指定长度的字符串。 平时看没啥用,但是例如想格式化出时间为  00:00:00这样,可以用

例如现在有个变量是3665秒,转换为时分秒,可以这样 (可能能够省下写一些if else 哦)


<?php



$duration = 3665; //秒
$hour = floor($duration/3600);
$minute = floor(($duration - 3600* $hour)/60);
$second = floor($duration%60);
$result = sprintf("%s:%s:%s",str_pad($hour,2,"0", STR_PAD_LEFT),str_pad($minute,2,"0", STR_PAD_LEFT),str_pad($second,2,"0", STR_PAD_LEFT));
var_Dump($result);

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值