Hiba az érvénytelen paraméterszám paraméter nem lett megadva ()


Ez a hiba jelzi a helyőrzők problémáit. A paraméterszó alatt ez az, amit ő mond. Ez azt jelenti, hogy a "paraméter nincs definiálva" azt jelenti, hogy helyet foglalunk a lekérdezéshez, amely nincs benne.

Például meghatároztuk a helyőrzőhöz benyújtott kérelmet, de elvetettük, amikor megírtuk a nevét egy tömbben:

$ stmt = $ db -> felkészülés ('UPDATE t SET név = WHERE id =: név');
$ stmt -> execute (['mane' => $ név. 'id' => $ id]));

Az OEM megpróbálja megtalálni a kérésben a "mane" nevű helyőrzőt, nem találja meg, és ezt a hibát fogja felhozni!

By the way, ellentétben a széles körben elterjedt félreértelmezéssel, a jelenléte egy vastagbél a index a tömb nem feltétlenül szükséges, és az oka a hiba nem lehet.

A hiba kijavításakor ügyelni kell a következő problémákra:

1. A leggyakoribb: a felhasználó szokásos módon idézőjelek között tartja a helyőrzőket. Tedd meg minden esetben lehetetlen - OEM elviszi őket túl a szokásos sor, és ennek következtében nem fog találni bármelyik helykitöltő kérelmet.

2. Szintén nagyon gyakori ok: az elnevezett helyőrzők hibája. Mondja meg a kérés felhasználói neve és a továbbított adatok - felhasználónév. Vegye figyelembe, hogy a helyőrzők nevei kis- és nagybetűkre érzékenyek.

3. Az előző hibához hasonlóan egyszerűen elfelejtette írni a kérésben a helyőrzőt, amelyre az adatokat továbbítja. Szükséges, hogy minden átvitt adatot és a megfelelő helyőrzőket rendezzen.

4. Ne feledje, hogy a helyőrző neveknél csak a latin betűk, számok és aláhúzás támogatottak. Tehát ha van egy orosz betű a helyőrző nevében, akkor ez ugyanazt a hibát okozza.

5. Ha a lekérdezés string dinamikusan generált, akkor a megjelenése ezeket a hibákat kell alkalmazni hibakeresés készség - nevezetesen, hogy a program által generált SQL, és ha ez megfelel annak, amit várnak. By the way, a dinamikus megalakult a lekérdezés kell figyelni, hogy a védelem a befecskendező mezőnevek. Names kell határozni azoknak a forgatókönyvet, és adja meg a lekérdezés csak ezt az előre elkészített lista!