"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo usar las declaraciones preparadas con MySQLI con el operador in de manera efectiva?

¿Cómo usar las declaraciones preparadas con MySQLI con el operador in de manera efectiva?

Publicado el 2025-03-23
Navegar:327

How to Use MySQLi Prepared Statements with the IN Operator Effectively?

mySqli preparó declaraciones con el operador en el operador

Las declaraciones preparadas ofrecen seguridad y rendimiento mejorados sobre consultas tradicionales al permitirle especificar valores de parámetros por separado de la declaración en sí. Sin embargo, cuando se trata de usar declaraciones preparadas con el operador in, puede encontrar problemas si su enfoque no es correcto.

el problema

como se menciona en la consulta inicial, vinculando una cadena de valores de la Comm-Pared a la declaración preparada usando bind_param ('s', $ in_statement) no tendrá resultados de rendimiento, incluso los datos de los datos, incluso los datos de los datos preparados en la declaración preparada en la declaración preparada. base de datos.

la solución

La solución radica en tratar cada valor de parámetro individualmente:

  1. crea una matriz con numeradas claves y pase los valores a su explícole por referencia.
  2. Combine la cadena de tipo de datos con una matriz de signos de interrogación para formar la cadena de parámetros para la instrucción preparada.
  3. Deshift la cadena de tipo de datos en la matriz de valores de parámetros.
  4. use Call_user_func_array para vincular la matriz de valores de parámetros a los valores de parámetros a la preparación preparada Declaración.
Código de ejemplo

$ LastNames = ['Braun', 'Piororkowski', 'Mason', 'Nash']; $ arparams = []; foreach ($ lastnames como $ key => $ valor) { $ Arparams [] = & $ LastNames [$ Key]; } $ count_params = count ($ arparams); $ int = str_repeat ('i', $ count_params); array_unshift ($ arparams, $ int); $ q = array_fill (0, $ count_params, '?'); $ params = implose (',', $ q); $ data_res = $ mysqli-> preparar ("seleccione` id`, `name`,` edad` de `usuarios` donde` lastName` in ({$ params}) "); call_user_func_array ([$ data_res, 'bind_param'], $ arparams); $ data_res-> ejecute (); $ resultado = $ data_res-> get_result (); while ($ data = $ result-> fetch_array (mysqli_assoc)) { // Tu código aquí ... } $ result-> free (); $ data_res-> close ();

 $value) {
    $arParams[] = &$lastnames[$key];
}

$count_params = count($arParams);
$int = str_repeat('i', $count_params);
array_unshift($arParams, $int);

$q = array_fill(0, $count_params, '?');
$params = implode(',', $q);

$data_res = $mysqli->prepare("SELECT `id`, `name`, `age` FROM `users` WHERE `lastname` IN ({$params})");
call_user_func_array([$data_res, 'bind_param'], $arParams);
$data_res->execute();
$result = $data_res->get_result();

while ($data = $result->fetch_array(MYSQLI_ASSOC)) {
    // Your code here...
}

$result->free();
$data_res->close();
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3