2011-04-06 15 views
8

Estoy tratando de pasar una cadena en mis MySQLi preparados declaración, pero me da el error:no puede pasar parámetros por referencia en MySQLi

no puede pasar parámetros por referencia en MySQLi

Aquí está el código correspondiente:

$kv = json_encode(array($key => $value)); 
$stmt->prepare("insert into rules (application_id, ruletype, rule_name, rule_info) values (?, ?, ?, ?);"); 
$stmt->bind_param('iiss', $application_id, 1, $config_name, $kv); 
+7

¿Por qué no simplemente inserta el ''1'' directamente en la consulta? Si se trata de un valor estático, no tiene sentido convertirlo en un parámetro vinculado. De lo contrario, simplemente haga '$ one = 1;' y luego ingrese '$ one' en la llamada de enlace. No puedes hacer una referencia a una constante. –

Respuesta

20

'IISS' y '1' no se pueden pasar como referencia, ya que no son variables, pero las constantes de cadena. Necesita crear dos variables con los valores mencionados y pasarlas, porque la función bind_param() espera que las variables pasen por referencia.

Editar: es '1' el que está causando el problema, no el nombre del parámetro que se enlaza ('iiss'). Perdón por la información errónea, tenía prisa cuando respondía su pregunta.

+0

Tenga en cuenta que la primera cadena no es un parámetro, esos son los ** caracteres de especificación de tipo **, consulte http://php.net/manual/en/mysqli-stmt.bind-param.php – jeroen

+0

Sí, está bien, mi mal, revisé la pregunta y noté que OP no está pasando un argumento como variable. Editaré la respuesta con tu entrada. –

0

Verificar $config_name argumento. '1' no pasa como referencias

Cuestiones relacionadas