mysqli erstellte Aussagen mit dem in Operator
Vorbereitete Anweisungen bieten eine erweiterte Sicherheit und Leistung über traditionelle Abfragen an, indem Sie die Parameterwerte getrennt von der Anweisung selbst angeben. Wenn es jedoch darum geht, vorbereitete Aussagen mit dem In-Operator zu verwenden, können Sie auf Probleme stoßen, wenn Ihr Ansatz nicht korrekt ist.
Das Problem
, wie in der anfänglichen Abfrage erwähnt, bindend ein Komma-separatter Zeichenfolge, obwohl die hergestellten Aussage in den Daten, obwohl die Daten nicht in der Lage sind, in den Daten, $ in $., $ in_statement). Datenbank.
Die Lösung
Die Lösung liegt in der Behandlung jedes Parameterwerts einzeln:
php $ lastnames = ['braun', 'piorgowski', 'mason', 'nash']; $ arparams = []; foreach ($ lastNames as $ key => $ 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-> prepe ("Select` id`, `name`,` ay` von `user`` wobei` 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)) { // dein Code hier ... } $ 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();
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3