2013-03-22 40 views
6

Tôi đã tìm kiếm chủ đề này, nhưng chưa tìm thấy giải pháp nào; có một câu hỏi tương tự, nhưng nó không được giải quyết: Working with characters with accents in sql query and table nameTruy vấn SQL Server từ PHP

Tôi đang làm việc với cơ sở dữ liệu trên SQL Server 2005 sử dụng Modern_Spanish_CI_AS làm đối chiếu. Tôi đang phát triển một giao diện web bằng PHP, và tôi bị mắc kẹt với một vấn đề trọng âm.

Có một bảng (giả sử "Objetos") mà các lĩnh vực bao gồm: ID Tên Descripción

tôi không thể truy vấn bảng này vì giọng. Nếu tôi xây dựng truy vấn của mình "Select a.ID, a.Name FROM Objetos", nó hoạt động hoàn hảo, nhưng nếu được thay đổi thành "Select a.ID, a.Descripción FROM Objetos", nó sẽ trả về 0 hàng.

Tôi không thể thay đổi đối chiếu cơ sở dữ liệu, vì vậy tôi đã giải mã các truy vấn trước khi gửi $ssql = utf8_decode($ssql); ... Thật lạ lùng, sử dụng cách giải quyết này tôi có thể làm INSERT, nhưng không thể SELECT.

Bất kỳ ý tưởng nào? Cảm ơn

+5

Nếu bạn muốn sống một cuộc sống hạnh phúc, luôn sử dụng chỉ sử dụng các ký tự ascii chuẩn cho các định nghĩa bảng và trường. – Teson

+0

Khi user247245 cho biết, bạn sẽ có một chuyến đi khó khăn nếu bạn sử dụng bất cứ điều gì nhưng ký tự ansi thấp hơn cho tên bảng/cột. Bạn nên tuân theo quy tắc tương tự như trong bất kỳ ngôn ngữ nào khác: Tên của Entitie PHẢI không chứa các ký tự đặc biệt. Ngoài ra. Bạn nên sử dụng utf8_general_ci hoặc một trong các chị em của nó cho tất cả các cơ sở dữ liệu và bảng của bạn. Collation này chứa bất kỳ và tất cả các ký tự đặc biệt và có thể dễ dàng sử dụng trong bất kỳ mã lập trình. – ToBe

Trả lời

1

Thử quanh cột bằng ký tự "` ". Nếu nó không hoạt động, hãy thử xóa "a". tiền tố từ tên cột.

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