Tôi đang cố gắng tìm các bản ghi từ một bảng dựa trên một biến được lấy từ trình của người dùng. Đây là truy vấn của tôi:
$field = t('field_data_' . variable_get('tabbed_content_field'));
$fieldValue = t(variable_get('tabbed_content_field') . '_value');
$query = db_query('SELECT :fieldValue FROM {:field}', array(':field' => $field, ':fieldValue' => $fieldValue));
Tuy nhiên, bất cứ khi nào tôi chạy truy vấn này, tôi gặp lỗi sau:
PDOException: SQLSTATE [42000]: Lỗi cú pháp hoặc vi phạm truy cập: 1064 Bạn có lỗi trong cú pháp SQL của mình; kiểm tra hướng dẫn tương ứng với phiên bản máy chủ MySQL của bạn để biết cú pháp đúng để sử dụng gần '' field_data_field_news_release_date '' ở dòng 2: SELECT: fieldValue TỪ {: field}; Mảng ([: trường] => field_data_field_news_release_date [: fieldValue] => field_news_release_date_value)
Tôi có thể truy xuất hồ sơ thành công với:
$query = db_query('SELECT ' . $fieldValue . ' FROM { ' . $field . '}');
Tuy nhiên, theo tôi hiểu thì điều này sẽ không an toàn.
Có ai biết tại sao truy vấn đầu tiên sẽ không hoạt động?
t()
cho các chuỗi không cần dịch. Tên của bảng cơ sở dữ liệu hoặc trường cơ sở dữ liệu không phải là thứ cần dịch; bảng "nút" luôn là bảng "nút", độc lập với ngôn ngữ hiện được bật cho trang web.