Я пробовал случайные вещи. Кажется, что odbc_prepare()
определяет параметры, если вы используете один из этих синтаксисов (или даже смешиваете их):
INSERT INTO foo (bar) VALUES (:param)
INSERT INTO foo (bar) VALUES ([param])
Однако odbc_execute()
будет жаловаться на пропущенные параметры, независимо от того, с чем вы их кормите (числовой массив, ассоциативный массив ...). И он будет знать точное количество параметров, которые не могут быть найдены. Это делает весь механизм совершенно бессмысленным.
К сожалению, мое лучшее решение на данный момент таково:
/**
* Escape a string to be inserted into Access via ODBC
*/
function odbc_escape_string_access($value){
$replacements= array(
"'" => "''",
);
return strtr($value, $replacements);
}
Это ужасно, но я не мог найти ничего лучше.