Tôi đã thấy câu hỏi này lặp lại một vài lần trên Stack Overflow nhưng không có cách nào khám phá đầy đủ vấn đề (hoặc ít nhất là theo cách hữu ích đối với tôi)
Vấn đề là một truy vấn DB sẽ trả về kiểu dữ liệu số nguyên trong PHP cho các cột số nguyên. Thay vào đó, truy vấn trả về mọi cột dưới dạng một loại chuỗi.
Tôi đã đảm bảo rằng "PDO :: ATTR_STRINGIFY_FETCHES" nếu sai chỉ để đảm bảo kết quả không được chuyển thành chuỗi.
Các câu trả lời mà tôi đã xem:
- Nó không thể được thực hiện
- Không, nó hoạt động trên Mac OS X được cài đặt PHP / MySQL
- Nhập truyền tất cả các giá trị của bạn trong mã của bạn
- Không, tôi sẽ không làm điều đó
- Đừng lo lắng về điều đó, PHP được gõ lỏng lẻo
- Dữ liệu của tôi được xuất ra dưới dạng JSON và được sử dụng bởi nhiều dịch vụ khác, một số yêu cầu dữ liệu ở định dạng chính xác
Từ nghiên cứu của mình, tôi hiểu rằng đây là vấn đề triển khai trình điều khiển.
Nhiều nguồn cho rằng trình điều khiển gốc MySQL không hỗ trợ trả về kiểu số. Điều này có vẻ không đúng vì nó hoạt động trên Mac OS X. Trừ khi họ muốn nói rằng "trình điều khiển gốc MySQL trên Linux không hỗ trợ tính năng này".
Điều này ngụ ý rằng có điều gì đó đặc biệt về trình điều khiển / môi trường mà tôi đã cài đặt trên Mac OS X. Tôi đã cố gắng xác định sự khác biệt để áp dụng bản sửa lỗi nhưng tôi bị hạn chế bởi kiến thức về cách kiểm tra những điều này.
Sự khác biệt:
- PHP trên OS X được biên dịch và cài đặt thông qua Home Brew
- PHP trên Ubuntu đã được cài đặt thông qua "apt-get install php5-dev"
- PHP trên OS X đang kết nối với máy chủ MySQL cũng chạy trên OS X
- Phiên bản máy chủ: 5.1.71-log Phân phối nguồn
- PHP trên Ubuntu đang kết nối với Cơ sở dữ liệu đám mây Rackspace
- Phiên bản máy chủ: 5.1.66-0 +quee1 (Debian)
Môi trường Ubuntu
- Phiên bản: 10.04.1
- PHP 5.4.21-1 + debphp.org ~ lucid + 1 (cli) (xây dựng: 21/10/2013 08:14:37)
php -i
pdo_mysql
Trình điều khiển PDO cho MySQL => phiên bản API ứng dụng khách được kích hoạt => 5.1.72
Môi trường Mac OS X
- 10,7,5
- PHP 5.4.16 (cli) (xây dựng: 22/08/2013 09:05:58)
php -i
pdo_mysql
Trình điều khiển PDO cho MySQL => phiên bản API ứng dụng được kích hoạt => mysqlnd 5.0.10 - 20111026 - $ Id: e707c415db32080b3752b232487a435ee0372157 $
Cờ PDO được sử dụng
PDO::ATTR_CASE => PDO::CASE_NATURAL,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL,
PDO::ATTR_STRINGIFY_FETCHES => false,
PDO::ATTR_EMULATE_PREPARES => false,
Mọi sự giúp đỡ và chuyên môn sẽ được đánh giá cao :) Tôi chắc chắn sẽ đăng lại ở đây nếu tôi tìm thấy câu trả lời.