2011-03-07 8 views
7

Estoy tratando de vincular los parámetros a un INSERTAR en la declaración preparada de MySQL si esa variable existe, de lo contrario insertar nulo.PHP bind_params with null

Esto es lo que tengo, pero no está funcionando:

if (!empty($name)) { 
    $result->bind_param('ss', $name, $url_friendly_name); 
} else { 
    $result->bind_param('ss', null, null); 
} 

if (!empty($description)) { 
    $result->bind_param('s', $description); 
} else { 
    $result->bind_param('s', null); 
} 

¿Alguien sabe de una mejor forma de hacer esto o hay sólo un pequeño problema con mi código. Estoy haciendo lo anterior para cada variable en la declaración preparada.

+0

Puede usar una cadena vacía allí, p. Ej. ''''? – alex

+0

¿Está tratando de dejar un campo fuera de la consulta si está vacío? –

+0

@tandu, sí, si puedo dejar un campo, eso sería trabajo también. ¿Tienes una mejor manera de hacerlo? – ATLChris

Respuesta

4

bind_param obras de referencia. Eso significa que toma una variable, luego usa el valor de esa variable en execute.

null no es una variable.

Intenta establecer una variable en null y luego vincula esa variable en su lugar.

(también considerar el uso de DOP en lugar de mysqli, donde el método execute puede tener una matriz simple y se puede pasar por alto la metodología de fijación excéntrico de mysqli.)

1

Tenga en cuenta que no se puede utilizar bind_param dos veces, porque la última declaración reemplazará a la primera. Intenta encontrar una forma de usar bind_param solo una vez.