PHP函式 sprintf 拼接sql語句

2021-10-14 18:23:25 字數 1386 閱讀 3322

簡單常用的有%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

<?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);

fgets函式 sprintf函式

char fgets char restrict s,int n,file restrict stream 第乙個引數為資料存放的陣列,第二個引數為最大長度,第三個引數為輸入源,我們從鍵盤讀入,引數為stdin 可以看到fgets 讀取的字串長度包含了結尾的 0 遍歷陣列時要注意下標越界。strle...

sprintf函式詳解

printf 可能是許多程式設計師在開始學習c 語言時接觸到的第二個函式 我猜第乙個是main 說 起來,自然是老朋友了,可是,你對這個老朋友了解多嗎?你對它的那個孿生兄弟sprintf 了解多 嗎?在將各種型別的資料構造成字串時,sprintf 的強大功能很少會讓你失望。由於sprintf 跟pr...

sprintf函式詳解

sprintf 將字串格式化。標頭檔案 include 語法 int sprintf string format,mixed args 返回值 字串長度 strlen 1.處理字元方向。負號時表時從後向前處理。2.填空字元。0 的話表示空格填 0 空格是內定值,表示空格就放著。3.字元總寬度。為最小...