Trên máy tính nhà tôi,MySQL chọn b'1' trả về số nguyên 1 hoặc ký tự ASCII 1 tùy thuộc vào môi trường
mysql_fetch_row(mysql_query(" select b'1' "))[0]
lợi nhuận chuỗi "1".
Nhưng khi được lưu trữ trên máy chủ web nó sẽ trả về chuỗi có ký tự ASCII 1.
Doc không say-
giá trị Bit được trả về như các giá trị nhị phân. Để hiển thị chúng ở dạng có thể in được , hãy thêm 0 hoặc sử dụng hàm chuyển đổi chẳng hạn như BIN().
Nhưng trên máy cục bộ, nó vẫn trả về "1" mà không có bất kỳ chuyển đổi nào được thực hiện bởi tôi.
Làm cách nào để có hành vi tương tự trên máy chủ web của tôi?
Nếu tôi nhận được hành vi tương tự sau đó tôi không cần phải chuyển đổi mã PHP của tôi từ như
$row = mysql_fetch_row(mysql_query(" select bit1_field from .. where .. "));
if($row[0] === '1') ...;
để
... select bit1_field+0 as bit1_field ...
nơi bit1_field
là loại bit(1)
.
Bạn có đang sử dụng cùng một phiên bản PHP và MySQL cả hai lần không? – Patashu
@Patashu Các phiên bản PHP và Apache giống nhau. MySQL là khác nhau nhưng các tài liệu của cả hai phiên bản nói cùng một điều, các bit đó phải được chuyển đổi để được hiển thị. – gom
Bạn đang thử nghiệm như thế nào? Bạn đang sử dụng 'var_dump()'? Cũng lưu ý rằng mảng dereferencing 'mysql_fetch_row (mysql_query (" select b'1 '")) [0]' chỉ được hỗ trợ từ PHP ** 5.4 **. Tôi hy vọng bạn cũng đã kích hoạt báo cáo lỗi trong trường hợp ... – HamZa