php - stmt - ¿Es el colon inicial para los nombres de parámetros pasados a PDOStatement:: bindParam() opcional?
sentencias preparadas ventajas y desventajas (1)
Al pasar los parámetros con nombre de la forma :name
a PDOStatement::bindParam()
, parece funcionar independientemente de si se utilizan o no los dos puntos.
es decir, esto:
$statement->bindParam('':name'', $var);
o esto:
$statement->bindParam(''name'', $var);
parece funcionar.
Aquí está la documentación para PDOStatement::bindParam()
parámetro
Identificador de parámetro Para una sentencia preparada utilizando marcadores de posición con nombre, este será un nombre de parámetro de la forma : nombre. Para una declaración preparada utilizando marcadores de posición de signo de interrogación, esta será la posición de 1 indexado del parámetro.
¿Esto significa que se pueden dejar los dos puntos?
No, dado que la documentación no menciona esto, creo que es seguro suponer que este comportamiento no es oficialmente compatible y no se debe confiar en él.
Sin embargo, en realidad funciona (al menos en PHP 5.3.24) - internamente se agregarán dos puntos al parámetro si falta ( ver ext/pdo/pdo_stmt.c:363
en el código fuente de PHP 5.3.24 ) .