Hàm “sprintf” trong PHP
Điểm khác nhau lớn nhất là cách bạn gán biến vào trong chuỗi. Ở cách 1 bạn gán thẳng $username và $password vào trong chuỗi, còn cách 2 thì hàm sprintf() lấy tham số $username và $password đã khai báo gán theo thứ tự từ trước ra sau.
$username = “HoangKim”;
$password = 123;
$query1 = “SELECT * FROM users WHERE username=’$username’ AND password =’$password'”;
$query2 = sprintf(“SELECT * FROM users WHERE username=’%s’ AND password =’%s'”, $username, $password);
echo $query1; //SELECT * FROM users WHERE username=’HoangKim’ AND password =’123′
echo $query2; //SELECT * FROM users WHERE username=’HoangKim’ AND password =’123′
Kết quả trả ra là như nhau. Thế nhưng trong trường hợp vô tình truy vấn ngược lại mà quên đổi thứ tự tham số trong hàm sprintf():
$username = “HoangKim”;
$password = 123;
$query1 = “SELECT * FROM users WHERE password=’$password’ AND username =’$username'”;
$query2 = sprintf(“SELECT * FROM users WHERE password=’%s’ AND username=’%s'”, $username, $password);
echo $query1; //SELECT * FROM users WHERE password=’123′ AND username =’HoangKim’
echo $query2; //SELECT * FROM users WHERE password=’HoangKim’ AND username=’123′
Ngoài ra, một điểm đặc biệt là hàm sprintf() cho phép bạn xác định kiểu kí tự:
%b: Định dạng INT, nhị phân
%c: Định dạng INT, ASCII
%d: Định dạng INT, thập phân
%s: Định dạng string
$username = “HoangKim”;
$password = 123;
$query1 = “SELECT * FROM users WHERE username=’$username’ AND password =’$password'”;
$query2 = sprintf(“SELECT * FROM users WHERE username=’%s’ AND password =’%s'”, $username, $password);
echo $query1; //SELECT * FROM users WHERE username=’HoangKim’ AND password =’123′
echo $query2; //SELECT * FROM users WHERE username=’HoangKim’ AND password =’123′
Kết quả trả ra là như nhau. Thế nhưng trong trường hợp vô tình truy vấn ngược lại mà quên đổi thứ tự tham số trong hàm sprintf():
$username = “HoangKim”;
$password = 123;
$query1 = “SELECT * FROM users WHERE password=’$password’ AND username =’$username'”;
$query2 = sprintf(“SELECT * FROM users WHERE password=’%s’ AND username=’%s'”, $username, $password);
echo $query1; //SELECT * FROM users WHERE password=’123′ AND username =’HoangKim’
echo $query2; //SELECT * FROM users WHERE password=’HoangKim’ AND username=’123′
Ngoài ra, một điểm đặc biệt là hàm sprintf() cho phép bạn xác định kiểu kí tự:
%b: Định dạng INT, nhị phân
%c: Định dạng INT, ASCII
%d: Định dạng INT, thập phân
%s: Định dạng string