2013-07-04 35 views
8

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).

+0

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

+0

@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

+0

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

Trả lời

2

Dường như bạn đang sử dụng hai trình điều khiển khác nhau trên các máy. Có hai, php5-mysqlndphp5-mysql. Website Factor đã viết về hành vi khác nhau cho lĩnh vực BIT vào cuối tháng Tư và tôi cũng có một số máy có cùng phiên bản, nhưng các ổ đĩa khác nhau. Có lẽ vì trình điều khiển không thay đổi khi nâng cấp từ phiên bản cũ hơn, nhưng khi php> 5.4 được cài đặt, nó sẽ được cài đặt theo mặc định là php5-mysqlnd. Đây là MySQL page about the differences.

+0

Điều đó đã làm được! Cảm ơn. Tôi đã thay đổi thành mysqlnd trên máy chủ, bây giờ bit'1 'đang được trả về là "1". yum xóa php54-mysql; yum cài đặt php54-mysqlnd; dịch vụ httpd khởi động lại; – gom

Các vấn đề liên quan