⊗ppSpOtSQ 80 of 83 menu

Uboreshaji wa Matumizi ya Maswali ya SQL katika PHP

Utekelezaji wa maswali ya SQL kwa hifadhidata ni operesheni yenye kuwaka polepole sana. Kwa hivyo ni muhimu kujaribu kupunguza idadi ya maswali kwenye hifadhidata.

Kosa la kawaida kabisa ni utekelezaji wa wingi wa maswali ya SQL katika kitanzi, hali kadhalika, kuna maswali mbadala yanayoruhusu kufanikisha kile unachotaka kwa amri moja.

Tuangalie kwa mfano.

Wacha tuwe na safu yenye id ya kumbukumbu katika hifadhidata data na tunahitaji kufuta kumbukumbu zenye id hizo.

Bila kufikiria sana, mtu anaweza kuandika muundo "mzuri" kama huu:

<?php $ids = [1, 2, 3, 4, 5]; // safu ya kufutia foreach ($ids as $id) { mysqli_query($link, "DELETE FROM users WHERE id=$id"); } ?>

Shida ya msimbo huu ni kwamba, katika kitanzi, hutekeleza wingi wa maswali. Fikiria kuwa kwenye safu kutakuwa na vitu 100 - hutekeleza maswali 100 kwenye hifadhidata!

Mtego maalum wa kazi iliyoelezwa ni kwamba wakati wa kuunda tovuti, hifadhidata data ni ndogo na maswali hutekelezwa haraka sana. Hata hivyo, kadiri tovuti inavyofanya kazi kwenye hesti, hifadhidata itakuwa inakua, maswali yataanza kuteleza polepole zaidi, na inaweza kufikia hali ambapo, kutokana na utekelezaji wa mamia ya maswali katika kitanzi, tovuti itapakia kwa zaidi ya dakika moja!

Kwa kutumia juhudi kidogo tu, inawezekana kufanya hivi kwamba, utekelezaji wa swali moja tu ndio utafanyika, kama hivi:

<?php $ids = [1, 2, 3, 4, 5]; $str = implode(',', $ids); // tutapata mfuatano '1,2,3,4,5' mysqli_query($link, "DELETE FROM users WHERE id IN ($str)"); ?>

Boresha msimbo ulio hapa chini:

<?php $arr = [1, 2, 2, 4, 5]; $res = []; for ($i = 1; $i < count($arr); $i++) { $note = mysqli_query($link, "SELECT * FROM users WHERE id=$id"); for ($data = []; $row = mysqli_fetch_assoc($note); $data[] = $row); $res[] = $data; } var_dump($res); ?>
Kiswahili
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Tunatumia kuki kwa ajili ya uendeshaji wa tovuti, uchambuzi na ubinafsishaji. Usindikaji wa data unafanyika kulingana na Sera ya Faragha.
kubali yote sanidi kataa