Szerző Téma: MySQL R31 elözõ mûveletben érintett sorok számának lekérése  (Megtekintve 1039 alkalommal)

MySQL R31 elözõ mûveletben érintett sorok számának lekérése
« Dátum: 2013. augusztus 17. - 15:54:19 »
0 Show voters
UPDATE sql utasításnál beszúrok egy új sort, és mûveletben érintett sorok számát szeretném lekérdezni MySQL-el r31-es pluginban.
Elöszõr csak nullát adott vissza mindig, azért mert rossz helyre raktam a függvényt. Ekkora mysql_log-ban írt figyelmesztetõ üzeneteket.
 
[15:27:35] [WARNING] cache_affected_rows - no active cache
[15:27:35] [DEBUG] cache_insert_id - connection handle: 1
[15:27:35] [WARNING] cache_insert_id - no active cache

 
A mysql_tquery-ben aztán meghívok egy callback-et utána már visszaadott a cache_affected_rows egy \'1\'-es egész szám értéket.
A cache_insert_id függvény helyes értéket adott vissza.
cache_affected_rows(connectionHandle = 1);
 
[15:37:33] [DEBUG] cache_get_data - connection handle: 1
[15:37:33] [DEBUG] cache_affected_rows - connection handle: 1
[15:37:33] [DEBUG] cache_insert_id - connection handle: 1

 
cache_insert_id - connection handle: 1 hibátlanul adja vissza, viszont cache_affected_rows függvény mindig csak \'1\'-es egész szám értéket kapom vissza és érdekes nem ír hibát a mysql_logban.
« Utoljára szerkesztve: 2013. augusztus 17. - 15:56:49 írta bbTamas »

MySQL R31 elözõ mûveletben érintett sorok számának lekérése
« Válasz #1 Dátum: 2013. augusztus 18. - 01:47:14 »
0 Show voters
Te magad írtad hogy updatezel EGY sort miért csodálkozol mikor eggyel tér vissza a függvény?
« Utoljára szerkesztve: 2013. augusztus 18. - 01:50:43 írta hegdavid95 »

MySQL R31 elözõ mûveletben érintett sorok számának lekérése
« Válasz #2 Dátum: 2013. augusztus 18. - 03:23:27 »
0 Show voters
Huh nem tudom miért írtam UPDATE-t, amikor INSERT -nél akarom lekérni a sorok számát, és ott ad vissza egyet.

MySQL R31 elözõ mûveletben érintett sorok számának lekérése
« Válasz #3 Dátum: 2013. augusztus 18. - 09:58:28 »
+1 Show voters
be tudod másolni esetleg a kódot? egyébként a mysql_affected_rows nak mûködnie kéne ha a THREAD callbackban hívod meg. a \"No Active Cache\" akkor szokott elõjönni amikor egy olyan funkcióban hívsz meg cache függvényt ami nem egy mysql query bõl való visszatéréskor hívódik meg. de ha mégsem errõl lenne szó és bugos a függvény amit kétlek, insertnél muszáj hogy tudd hány sort illesztettél be, mert az a query létrehozásánál látszik
pl itt 1:
 
INSERT INTO tabla (adat1,adat2) VALUES (16,18)

 
Itt meg 2:
 
INSERT INTO tabla (adat1,adat2) VALUES, (16,18),(20,22)

 
vagy még ha egy ciklus is hozza létre a query-t és nem elõre meg van írva pl
 
      format(query, sizeof(query), \"INSERT INTO tabla (`adat1`,`adat2`) VALUES \");
new adat1 = 16;
new adat2 = 18;
new insertcount = 5;
for(new i; i < insertcount; i++)
{
   format(query, sizeof(query), \"%s(%d,%d),\",largequery,adat1,adat2);
}
query[strlen(query)-1] = EOS;

 
még itt is tudnod kell, vagy ha a ciklus egy while ciklus, akkor meg egy változót növelsz minden sor beillesztésénél. más lehetõséget nemigen tudok elképzelni

MySQL R31 elözõ mûveletben érintett sorok számának lekérése
« Válasz #4 Dátum: 2013. augusztus 18. - 13:34:25 »
0 Show voters
Simán csak így használom.
Írtam egy egyszerû reg rendszert is, ott is egyet ad vissza.
 

{
    //egyéb kód
    format(sz_Sql_Input,sizeof(sz_Sql_Input),\"INSERT INTO players (name,pass,regip) VALUES (\'%s\',\'%s\',\'%s\')\",GetName(playerid),sz_EscapePass,sz_ip);
    mysql_tquery(SQL,\"sz_Sql_Input\", \"InsertQueryCallback\", \"\");
}
forward InsertQueryCallback();
public InsertQueryCallback()
{
    printf(\"%d\", cache_affected_rows(SQL));
    return 1;
}

 
Nekem itt \"cache_affected_rows\" itt is egyet írt ki a konzolba.
Most lehet, hogy én tudom rosszul de:
cache_affected_rows(connectionHandle = 1);  Az elõzõ mysql mûveletben érintett sorok számát adja meg
cache_insert_id(connectionHandle = 1); Visszaadja az elõzõ INSERT mûvelet által elõállított id-t
Most én a reg rendszerben nyílván azt szeretném megkapni, hogy hány valós regisztrált játékos van.
De tettem egy próbát és kézzel szúrtam be egy új rekordot:
A(z) 1 sor beszúrása megtörtént.

A beszúrt sor azonosítószáma: 7 ( a lekérdezés 0.0212 másodpercig tartott )

Szóval a függvény mûködik, ezért add vissza egyet. :wall:
« Utoljára szerkesztve: 2013. augusztus 18. - 13:47:12 írta bbTamas »

MySQL R31 elözõ mûveletben érintett sorok számának lekérése
« Válasz #5 Dátum: 2013. augusztus 18. - 13:44:48 »
+1 Show voters
Nem is értem miért csodálkozol rajt.
Egy sort illeszt be az insert into a példádban, miért is kellene több értéket mutatni a cache_affected_rows-nak?
Próbáld így:
 
INSERT INTO tabla (mezo1, mezo2, ...) VALUES
(\'adat11\', \'adat21\', ...),
(\'adat21\', \'adat22\', ...),
(\'adag31\', \'adat32\', ...);

 
Átírva:
 
INSERT INTO players (name,pass,regip) VALUES 
(\'Béla\',\'123\',\'127.0.0.1\'),
(\'Aladár\',\'1234\',\'127.0.0.2\'),
(\'László\',\'12345\',\'127.0.0.3\');

 
Itt már elméletileg 3-as értéket kellene visszaadnia.

MySQL R31 elözõ mûveletben érintett sorok számának lekérése
« Válasz #6 Dátum: 2013. augusztus 18. - 13:53:38 »
0 Show voters
Igen csak most csodálkoztam rá, hogy ha csak egy rekordot szúrok be akkor egy-et add vissza eredményül.
Ez nyilván logikus.
ɐʞzssǝlosz,hegdavid95 kösznöm segítségeteket, ment a plusz mindkettõtöknek.:D
« Utoljára szerkesztve: 2013. augusztus 18. - 13:55:55 írta bbTamas »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal