Posts

Showing posts from May, 2018

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'

So Sánh MyISAM và InnoDB

Sự khác nhau của MyISAM và InnoDB MySQL hỗ trợ nhiều kiểu bảng dữ liệu hoặc các máy chủ lưu trữ dữ liệu khác nhau để giúp tối ưu hóa cơ sở dữ liệu. Kiểu dữ liệu quen thuộc đối với lập trình viên trên nền tảng LAMP thường là MyISAM. Nhưng ngoài ra còn có nhiều kiểu bảng dữ liệu khác như InnoDB, BDB, MERGE, HEAP. Trong bài viết này, tôi xin đưa ra một số điểm khác biệt trong 2 kiểu bảng dữ liệu được sử dụng nhiều nhất hiện nay là MyISAM và InnoDB để bạn dễ lựa chọn khi quyết định lựa chọn engine nền bên dưới của MySQL. InnoDB hỗ trợ relationship (data integrity and foreign key constraints) còn MyISAM thì ko: Đa phần các open source đều không coi trọng việc này nhưng nếu ứng dụng của bạn bắt buộc phải dùng foreign key constraints thì InnoDB là lựa chọn. InnoDB hỗ trợ transactions còn MyISAM thì không: Nếu hệ thống của bạn dùng trong các ứng dụng ngân hàng hoặc phải thực hiện việc giao dịch thì chắc chắn là MyISAM sẽ bị loại. InnoDB thiên về row-level locking còn MyISAM thiên về