У меня есть таблица Excel, которую я хочу запросить с php-страницы, используя драйвер ODBC Excel. Возьмите следующую таблицу, например:Как запросить лист Excel с периодом в имени столбца
tblExample
----------------------------------
| Column1 | Column 2 | Column 3. |
----------------------------------
| 1 | Mike | 12345 |
| 2 | Sally | 67890 |
| 3 | Mitchel | 12345 |
| 1 | James | 67890 |
----------------------------------
Теперь предположим, что я хочу запросить каждый столбец с помощью инструкции LIKE. Первый из них я могу запросить без проблем.
SELECT * FROM tblExample WHERE Column1 LIKE '%1%';
Второй также легко запросить, хотя я должен использовать []
скобки из-пространства.
SELECT * FROM tblExample WHERE [Column 2] LIKE '%Mi%';
Третья колонна дает мне проблемы, однако. Когда я пытаюсь запросить его следующим образом:
SELECT * FROM tblExample WHERE [Column 3.] LIKE '%12345%';
Я получаю эту ошибку: (.)
37000: [Microsoft][ODBC Excel Driver] '' is not a valid name. Make sure that it does not include invalid characters or punctuation and that it is not too long.
Я уверен, что он ожидает имя таблицы после того, как, но я хочу быть в состоянии просто отправить имя столбца и сделать с ним. Переименование столбца для удаления периода действительно работает, но это не мой первый выбор решения.
Есть ли другой способ отправить имя столбца в ODBC Excel, который позволит мне сохранить (.)?
PHP код
$con = odbc_connect("my_data_source_name","","",SQL_CURSOR_FORWARD_ONLY);
$stmt = "SELECT * FROM tblExample WHERE [Column 3.] LIKE '%12345%'";
$qryrst = odbc_exec($con, $stmt); --fails here
Можете ли вы попытаться использовать двойные кавычки вместо квадратных скобок? – crnlx
Дайте ему пойти с 'SELECT * FROM tblExample WHERE" Столбец 3. " LIKE '% 12345%'; ', но я все еще получил ошибку, упомянутую выше. Хорошая идея. – jaredk
http://support.microsoft.com/kb/826763 - Попробуйте ... WHERE Столбец 3 [.] LIKE ... – user3056839