Saját PHP-Mysql hibaüzenet...hogyan?

Saját PHP-Mysql hibaüzenet...hogyan?
2009-06-12T10:54:04+02:00
2009-06-12T16:55:56+02:00
2022-10-25T15:40:46+02:00
Gattaca
Sziasztok.

PHP-MySQL páros alatti fejlesztésemnél felmerült egy szándék : az egyik táblán, amelybe insertál egy php-s oldal, tennem kellett egy indexet, konkétan egy unique-indext, hogy ne lehessen 2 egyforma adatot felvinni.

Meg lehet azt oldani, hogy ehelyett :
"Error: Duplicate entry 'adat' for key 'mezonev'"

valami ilyesmi legyen?

"A beirt adat már létezik az adatbázisban.Kérlek, ellenőrizd."

Előre is köszönöm.

G.
Mutasd a teljes hozzászólást!
1) Mielott beillesztessz:

// lekerdezed, hogy van e olyan ID aminek az erteket eppen be // akarod illeszteni. a $id_erteke a mysql tablabol kapott es a // mysql_fetch_array altal tombbe rendezett erteket tarolja. // azert irtam LIMIT 1 et, mert eleg csak annyit tudnunk h // legalabb egyszer mar szerepel az adott ertek a tablaban. $id_erteke = mysql_fetch_array(mysql_query("SELECT id FROM tablanev WHERE id=beilleszt_id LIMIT 1")); // megnezed, hogy a tomb 'id'-edik eleme igaz-e, azaz tartalmaz-e erteket. ha nem (figyeld a felkijaltojelet, ami tagadast jelent) vegezd el az INSERT utasitas. if(!$id_erteke['id']){ // ide kerul a mysql beillesztes; } else{ // ide kerul a hibakiiratas.; }

2) a mysql_error() visszaadja a legutolso mysql hibat.

// itt van a mysql INSERT; if(mysql_error()){ // ha volt mysql hiba, kiirathatod a hibauzenetet; }

ebben az esetben a mysql hiba ha jol tudom megjelenik a te hibauzenetedtol fuggetlenul. de erre nem emlekszem. :)

3) a REPLACE ugyanaz mint az INSERT csak ha egyezo erteket talal, beillesztes helyett kicsereli az uj ertekkel a regi erteket (REPLACE = kicserel)
a szintaktika ugyanaz mint INSERT eseteben:
mysql_query("REPLACE INTO tablanev (id) VALUES (1)");

meg amit lehet, bar a lenyege ugyanaz mint a REPLACE-nek, csak egy lepessel tobb, hogy ertekegyezes eseten az egyezo mezot DELETE -vel torlod majd beilleszted INSERT -el. (de ez felesleges bonyolitas, sztem)

a kod lehet hibas, es sztem olvass utana kicsit, h mi hogyan mukodik. mysql es PHP jo moka. kesobb pedig jo penz.
sok sikert! remelem segitett egy kicsit.
kitartas!
Mutasd a teljes hozzászólást!

  • mi sem egyszerubb. :)

    1) mielott beillesztened a mezot, ellenorizd le, hogy van-e mar olyan ID a tablaban.
    2) mysql_error()
    3) hasznalj INSERT helyett REPLACE -t, s igy ugyan nem lesz sose hibauzenet, de a mezot elmenti mindig.


    Mutasd a teljes hozzászólást!
  • Szia,

    bocs az értetlenségemért :

    egy kicsit részleteznéd a javaslatodat?

    Esetleg némi kis forrással? az igazság az, hogy nem vagyok biztos magamban annyira, hogy a google-t igénybe vegyem keresésre
    Konkrétabban : nem tudom biztosan, mit is kellene keresnem...

    G.
    Mutasd a teljes hozzászólást!
  • 1) Mielott beillesztessz:

    // lekerdezed, hogy van e olyan ID aminek az erteket eppen be // akarod illeszteni. a $id_erteke a mysql tablabol kapott es a // mysql_fetch_array altal tombbe rendezett erteket tarolja. // azert irtam LIMIT 1 et, mert eleg csak annyit tudnunk h // legalabb egyszer mar szerepel az adott ertek a tablaban. $id_erteke = mysql_fetch_array(mysql_query("SELECT id FROM tablanev WHERE id=beilleszt_id LIMIT 1")); // megnezed, hogy a tomb 'id'-edik eleme igaz-e, azaz tartalmaz-e erteket. ha nem (figyeld a felkijaltojelet, ami tagadast jelent) vegezd el az INSERT utasitas. if(!$id_erteke['id']){ // ide kerul a mysql beillesztes; } else{ // ide kerul a hibakiiratas.; }

    2) a mysql_error() visszaadja a legutolso mysql hibat.

    // itt van a mysql INSERT; if(mysql_error()){ // ha volt mysql hiba, kiirathatod a hibauzenetet; }

    ebben az esetben a mysql hiba ha jol tudom megjelenik a te hibauzenetedtol fuggetlenul. de erre nem emlekszem. :)

    3) a REPLACE ugyanaz mint az INSERT csak ha egyezo erteket talal, beillesztes helyett kicsereli az uj ertekkel a regi erteket (REPLACE = kicserel)
    a szintaktika ugyanaz mint INSERT eseteben:
    mysql_query("REPLACE INTO tablanev (id) VALUES (1)");

    meg amit lehet, bar a lenyege ugyanaz mint a REPLACE-nek, csak egy lepessel tobb, hogy ertekegyezes eseten az egyezo mezot DELETE -vel torlod majd beilleszted INSERT -el. (de ez felesleges bonyolitas, sztem)

    a kod lehet hibas, es sztem olvass utana kicsit, h mi hogyan mukodik. mysql es PHP jo moka. kesobb pedig jo penz.
    sok sikert! remelem segitett egy kicsit.
    kitartas!
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd