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:
$ 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();
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