Передача оператора в качестве параметра в odbc_execute () - PullRequest
0 голосов
/ 26 сентября 2011

Я делаю свои первые предварительные шаги в подготовленных утверждениях (и у меня не получается).

Ранее я построил следующее из $ _GET и повторил его обратно - код работал нормально, и он вернулсячто я ожидал от своей простой тестовой базы данных.

SELECT * FROM edit_box WHERE (tag="9") AND (text="mango") ORDER BY time_stamp DESC

и когда я пытаюсь закодировать его с помощью aprepared, даже если я не использую $ _GET, а просто жестко кодирую значения из предыдущего, мойкод выглядит следующим образом

$odbc_query = OdbcPrepare('SELECT * FROM edit_box WHERE (tag="?")' .
                          ' AND (text ? "?") ORDER BY time_stamp DESC');

$odbcResult = odbc_exec($odbc_query, array('9',  '=', 'mango'));  
var_dump($odbcResult);

Я получаю NULL.

Очевидно, что это ошибка в n00b, но я смотрю на нее и до сих пор не говорю, д'оо!

Что я делаю не так?

Заранее спасибо.

1 Ответ

1 голос
/ 26 сентября 2011

Вы не можете сделать это -

И (текст? "?")

Параметры, подобные этому, обычно могут передаваться только для фактических значений, а в некоторых случаях для идентификаторов ...

Чтобы сделать то, что вы хотите, вам нужно вставить строку «=» в оператор SQL ...

Вроде как -

$logical_operator = '=';

$sql = SELECT * FROM edit_box WHERE (tag=\"?\") AND (text $logical_operator \"?\") ORDER BY time_stamp DESC');

$odbc_query = OdbcPrepare($sql);

$odbcResult = odbc_exec($odbc_query, array('9', 'mango'));  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...