¿Te gustaría aprender Base de Datos con SQL Server?
Tenemos los diplomados que necesitas.¡Haz clic aquí!


mssql_bind es una función de PHP que sirve para enviar parámetros a procedimientos almacenados (stored procedures) en Microsoft SQL Server. Con ella podemos enviar al procedimiento almacenado todo tipo de variables: enteros, reales, cadenas, … y, si es necesario, nulos. Pero esta función tiene un problema y, cuando intentas pasarle una cadena vacía como parámetro al procedimiento almacenado, mssql_bind lo convierte en nulo, lo cual puede provocar errores si ese parámetro no acepta nulos.

mssql_bind tiene seis posibles parámetros:

mssql_bind($stmt, $nombre_param, $valor_param, $tipo, $es_salida, $es_nulo, $caracteres);
  1. $stmt: recurso devuelto por mssql_init()
  2. $nombre_param: nombre del parámetro en el procedimiento almacenado
  3. $valor_param: valor del parámetro a enviar al procedimiento almacenado
  4. $tipo: tipo de dato del parámetro (SQLTEXT, SQLVARCHAR, SQLCHAR, SQLINT1, SQLINT2, SQLINT4, SQLBIT, SQLFLT4, SQLFLT8, SQLFLTN)
  5. $es_salida: si este parámetro será modificado y reenviado por el procedimiento almacenado (por defecto: falso)
  6. $es_nulo: si enviar un valor nulo al procedimiento almacenado (por defecto: falso). Esta es la forma de enviar valores nulos. Poner null en $valor_param no funcionará.
  7. $caracteres: para valores de tipo SQLVARCHAR o SQLCHAR, el tamaño del campo como está declarado en el procedimiento almacenado (por defecto: -1)

Una vez visto esto, se supone que la única forma de enviar nulos al procedimiento almacenado sería poniendo el parámetro $es_nulo a true, pero el error del que estamos hablando, hace que una instrucción como esta también envíe un nulo:

mssql_bind($stmt, '@param_1', '', SQLVARCHAR, false, false, 10);

SOLUCIÓN (PARCHE, EN REALIDAD

Para poder enviar cadenas vacías a los procedimientos almacenados con mssql_bind, podemos hacer lo siguiente:

mssql_bind($stmt, '@param_1', ' ', SQLVARCHAR, false, false, 0);

Atención al valor del parámetro: no es cadena vacía sino un espacio.

La solución se basa en enviar al procedimiento almacenado un valor que no sea cadena vacía (por ejemplo, un espacio) para que la función no lo convierta en nulo, pero decirle que el tamaño del parámetro es cero, de forma que coja una cadena de cero caracteres (o cadena vacía).

Te esperamos en los siguientes artículos en donde hablaremos mas acerca de estos temas, los cuales hoy en día son de vital importancia en el mundo de la tecnología.

¿Te gustaría aprender Base de Datos con SQL Server?
Tenemos los diplomados que necesitas.¡Haz clic aquí!
About Author

NGuerrero

0 0 votos
Article Rating
Suscribir
Notificar de
guest
0 Comments
Comentarios.
Ver todos los comentarios
0
¿Te gusta este articulo? por favor comentax