PHP Conference Nagoya 2025

odbc_setoption

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_setoptionAjustar la configuración de ODBC

Descripción

odbc_setoption(
    resource $id,
    int $function,
    int $option,
    int $param
): bool

Esta función permite juguetear con las opciones de ODBC para una conexión o resultado de consulta en particular. Fue escrita para ayudar a encontrar soluciones a problemas en controladoes ODBC estrafalarios. Probablemente, debería usar esta función sólo si es un programador de ODBC y entiende los efectos de las opciones que se dan. Desde luego necesitará una buena referencia de ODBC para explicar todas las diferentes opciones y valores que se pueden usar. Diferentes versiones de controlardes soportan diferentes opciones.

Ya que los efectos pueden variar dependiendo del controlador ODBC, se desaconseja el uso de esta función en scripts que van a estar disponilbes públicamente. También, algunas opciones ODBC no están disponibles para esta función ya que deben ser establecidas antes de que se establezca la conexión o la consulta esté preparada. No obstante, lo que realmente importa es que si en trabajo en particular hace que PHP funcione, su jefe no le diga que use un producto comercial.

Parámetros

id

Es un id de conexión o de resultado sobre el que cambiar las configuraciones. Para SQLSetConnectOption(), es un id de conexión. Para SQLSetStmtOption(), es un id de resultado.

function

Es la función ODBC a usar. El valor debería ser 1 para SQLSetConnectOption() y 2 para SQLSetStmtOption().

option

La opción a establecer.

param

El valor para la opción dada por option.

Valores devueltos

Devuelve true en caso de éxito o false en caso de error.

Ejemplos

Ejemplo #1 Ejemplos de odbc_setoption()

<?php
// 1. Opción 102 de SQLSetConnectOption() es SQL_AUTOCOMMIT.
// Valor 1 de SQL_AUTOCOMMIT es SQL_AUTOCOMMIT_ON.
// Este ejemplo tiene el mismo efecto que
// odbc_autocommit($conexión, true);

odbc_setoption($conexión, 1, 102, 1);

// 2. Opción 0 de SQLSetStmtOption() es SQL_QUERY_TIMEOUT.
// Este ejemplo establece la consulta para que termine después de 30 segundos.

$resultado = odbc_prepare($conexión, $sql);
odbc_setoption($resultado, 2, 0, 30);
odbc_execute($resultado);
?>

add a note

User Contributed Notes 1 note

up
-1
egil at wp dot pl
15 years ago
Some options for Microsoft SQL Server ODBC:
1 - (SQL_MAX_ROWS) show top x rows
6 - (SQL_CURSOR_TYPE) zmiana kursora - ma działać dopiero w PHP 5.3

You can "translate" constant names (found on e.g. Microsoft website) to appropriate values using this page:
http://www.freepascal.org/docs-html/packages/odbcsql/index-2.html

BTW. If anyone is banging his head about "cursor type changed" warning while using execute with ORDER BY clause, then just use exec for now (remember to addslashes for yourself). In PHP 5.3 a Bug #43668 will be fixed and it will allow you to change a cursor type to SQL_CUR_USE_ODBC.

Note that you could also try to select a cursor type in odbc_connect, but that didn't work for me (much more problems appeared then it solved).
To Top