Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Kiểm tra kiểu biến PHP so với kiểu dữ liệu MYSQL

Nếu dữ liệu đến từ tệp CSV, bạn phải nhớ rằng tất cả các giá trị sẽ là chuỗi (ngay cả chuỗi số vẫn có kiểu chuỗi).

Vì vậy, bạn không thể sử dụng is_int() / is_float() / etc., bởi vì điều đó chỉ cho bạn biết về loại hoặc biến. Bạn có thể sử dụng is_numeric() để kiểm tra giá trị, nhưng điều này sẽ cho phép những thứ như ký hiệu theo cấp số nhân như "+ 0123.45e6". Đôi khi ctype_digit() có thể hữu ích cho việc kiểm tra số nguyên vì lý do này, vì nó sẽ chỉ cho phép các số 0-9 có mặt trong một chuỗi để nó trả về true.

Biểu thức chính quy cũng có thể được sử dụng để xác định các kiểu dữ liệu dựa trên mẫu, nhưng bạn phải để ý chi phí hiệu suất khi xử lý các tập dữ liệu lớn. Từ góc độ hiệu suất, hầu như luôn được khuyến khích sử dụng preg_ họ hàm thay vì ereg chức năng.

Nếu bạn đang xác thực những thứ như kiểu ENUM hoặc SET, có thể bạn sẽ cần tạo một mảng chứa các giá trị hợp pháp (hoặc trích xuất các giá trị này bằng một truy vấn) và sau đó kiểm tra giá trị so với chúng bằng in_array() .

Đối với các trường CHAR / VARCHAR, bạn có thể phân tích cú pháp định nghĩa cột và sau đó kiểm tra xem độ dài của giá trị có nằm trong các ràng buộc hay không.

Nếu loại NULL được cho phép trên bất kỳ cột nào của bạn, bạn cũng cần kiểm tra điều này (và có thể ánh xạ các giá trị trống hoặc chuỗi "NULL" thành giá trị NULL thực tế).

Nếu bạn đang tìm cách thực sự thoát các giá trị này một cách chính xác, hãy xem xét sử dụng các câu lệnh đã chuẩn bị và phần mở rộng PDO (Đối tượng dữ liệu PHP). Điều này cho phép MySQL thoát đúng cách dữ liệu dựa trên kiểu. (Bạn cũng có thể sử dụng các câu lệnh đã chuẩn bị sẵn với MySQLi.)

Nếu bạn đang tìm kiếm các loại dữ liệu cụ thể và cách xác định chúng, thì bạn có thể muốn chỉnh sửa câu hỏi của mình để tạo điều kiện cho các câu trả lời đầy đủ hơn.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các phương pháp hay nhất để lưu trữ hiệu quả các băm md5 trong mysql

  2. C # với tham số INSERT của MySQL

  3. Làm cách nào để nhóm trường ngày để nhận kết quả hàng quý trong MySQL?

  4. Các hàng truy vấn không tồn tại khóa siêu dữ liệu

  5. Làm thế nào để đặt bí danh một cách chính xác cho một bảng trong bộ mã?