Query ellenőrzés

makgab képe

Üdv!

I./ A db_query() eredményét lehet ellenőrizni? Csak azért, hogy ha hiba van, akkor ne irassak ki a drupal_set_message()-val felesleges üzenetet. Pl. volt már olyan, hogy INSERT SQL műveletnél duplicate unique key error-t adott az SQL szerver, a db_affected_rows() mégis okét adott.
Erre ugye megjelent az én üzenetem felett piros keretben a duplicate sql hiba.
Vagy ez csak SELECT, UPDATE esetén működik?

<?php
  db_query( "INSERT INTO ...");
  if ( db_affected_rows() ) {
     drupal_set_message('Bejegyzés rögzítve.');
     } else {
     drupal_set_message('Bejegyzés nem rögzí­thető!', 'error');
     } 
?>
Drupal verzió: 
sgabe képe

ha a kérés nem futott le megfelelően akkor a <?php db_query($query); ?> függvény FALSE értékkel tér vissza

0
0
makgab képe

Épp azt irtam, hogy "duplicate key error"-t adott az SQL szerver és mégis TRUE ágon ment tovább a db_affected_row(). :O

G.

0
0
sgabe képe

hol hogyan ellenőrizted a db_query(); eredményét? ugyanis a db_affected_rows(); egyáltalán nem erre van kitalálva, mint amire te jelen esetben "használod", ennek a visszatérési értéke a lefutott kérés alapján megváltoztatott sorok száma, ergo ha 0 akkor is igaz lesz és megy tovább

0
0
makgab képe

Akkor mi lenne a jó megoldás? (SELECT, INSERT, UPDATE, DELETE esetén.)

G.

0
0
dj képe

fut le az adatbázisban a lekérdezés akkor igaz értékkel tér vissza, különben hamis. Esetedben, ha nem tudta a beszúrást megcsinálni, mert a megszorítás ( primary key, unique, stb. ) nem engedte, hamis értékkel tér vissza.

<?php
  if ( db_query( "INSERT INTO ...") )
    drupal_set_message('Bejegyzés rögzítve.');
  else
    drupal_set_message('Bejegyzés nem rögzí­thető!', 'error');
?>
0
0

Üdv!
Dudás József

makgab képe

A db_affected_rows() tehát akkor használható, ha rekordok (sorok) módosultak a táblában, pl. insert, update, delete parancsok esetén használható. Ezt lehet vele ellenőrizni.

"Determine the number of rows changed by the preceding query."
Megadja az előző query által megváltozott sorok számát.

Változás insert, update, delete esetén van, igaz?

G.

0
0
sgabe képe

de ezen mi már itt szerintem nem fogunk tudni segíteni

0
0
makgab képe

Értem. A db_query() FALSE-al tér vissza ha hibás a query, ok.
Csak az a kérdés, ha a db_affected_rows() milyen esetben használható. SELECT esetén nem, mert ott nincs módosult rekord. INSERT, UPDATE, DELETE esetén van rekordváltozás.
Gondolom ezekben az esetekben lehet (van értelme) a db_affected_rows()-t használni.

<?php
  if ( db_query( "UPDATE table SET ...") ) {
         if ( db_affected_rows() ) 
             drupal_set_message('Bejegyzés rögzítve.');
    } else {
         drupal_set_message('Bejegyzés nem rögzí­thető!', 'error');
    }
?>

G.

0
0
lovranits képe

Sziasztok!

Az lenne a kérdésem, hogy hogyan lehet egy tartalom az azonsoítóját lekérdezni és azt elmenteni egy munkamenet függvénybe, hogy bárhol letudjam kérdezni az értéket. Mondjuk ha betöltök egy meglévő tartalmat, akkor annak hoygan tudom lekérdezni az adatbázisbeli azonbosítóját?

Előre is köszönöma segítséget

0
0
Nagy Gusztáv képe

Ennek a kérdésnek semmi köze az eredeti kérdéshez!

0
0

Nagy Gusztáv