De la MySQL la SQLite3

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator

lexta
Average Member
Mesaje: 110
Membru din: Mie Noi 16, 2011 11:53 pm

De la MySQL la SQLite3

Mesajde lexta » Dum Iul 12, 2015 4:28 am

Bună Ziua dragi forumişti, deci.. am un site la care lucrez de ceva vreme şi vreau să îl schimb pe SQLite3 de pe MySQL. Am şi eu nevoie de câteva funcţii pentru sqlite ca de exemplu, să înlocuies în fişier din mysql_query în sqlite3_query sau mysql_num_rows în sqlite3_num_rows sau mysql_fetch_array în sqlite3_fetch_array deci să înclocuiesc decât numele funcţiilor, să nu stau acum să modific la fiecare interogare, să modific deocată numele funcţiilor cu Notepad++. Sper că înţelegeţi ce vreau să spun.



Avatar utilizator
Birkoff
Senior Member
Mesaje: 6380
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Re: De la MySQL la SQLite3

Mesajde Birkoff » Dum Iul 12, 2015 12:34 pm

foloseste clasa http://sqlclassphp.sourceforge.net/inde ... hp-example
in arhiva zip ai exemple de lucru cu 2 baze de date in acelasi timp (mysql si sqlite), practic interogarile raman la fel, functiile apelate sunt la fel, doar instantarea clasei difera.

mai sunt mici diferente legate de sintaxa, de exemplu mysql are NOW() pe cand sqlite nu are, dar te prinzi tu pe parcurs de diferentele de sintaxa, dar nu cred ca te afecteaza.

atentie, sqlite nu suporta asa bine tranzactii (si e mai lent ca mysql cand e vb de volum mare de date, dar pentru un site de prezentare e ok).
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.

CristianG
Average Member
Mesaje: 85
Membru din: Mie Oct 30, 2013 4:45 pm

Re: De la MySQL la SQLite3

Mesajde CristianG » Dum Iul 12, 2015 12:50 pm

Daca ai mysql de ce nu folosesti mysqli sau pdo ... Folosesc acelasi sintaxe plus au si o viteza de inserare/update rapida. Dar cum zicea si birkoff la un site de prezentare e ok ca nu ai procese mari.

Im caz de doresti sa faci teste ai volumul de clase la birkoff cu toate tipurile de mysql

Success

lexta
Average Member
Mesaje: 110
Membru din: Mie Noi 16, 2011 11:53 pm

Re: De la MySQL la SQLite3

Mesajde lexta » Dum Iul 12, 2015 2:55 pm

Birkoff scrie:foloseste clasa http://sqlclassphp.sourceforge.net/inde ... hp-example
in arhiva zip ai exemple de lucru cu 2 baze de date in acelasi timp (mysql si sqlite), practic interogarile raman la fel, functiile apelate sunt la fel, doar instantarea clasei difera.

mai sunt mici diferente legate de sintaxa, de exemplu mysql are NOW() pe cand sqlite nu are, dar te prinzi tu pe parcurs de diferentele de sintaxa, dar nu cred ca te afecteaza.

atentie, sqlite nu suporta asa bine tranzactii (si e mai lent ca mysql cand e vb de volum mare de date, dar pentru un site de prezentare e ok).


Mulţumesc, o să încerc clasa aceea.

"sqlite nu suporta asa bine tranzactii" îmi poţi explica ce înseamnă chestia asta ? :-?

Vreau să încerc SQLite pentru că pe siteul care îl am (unul de statistici servere şi jucători) este un volum mare de date iar MySQL urcă procesorul foarte foarte mult.

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6380
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Re: De la MySQL la SQLite3

Mesajde Birkoff » Dum Iul 12, 2015 3:15 pm

1) legat de tranzactii, ai aici un tutorial http://www.tutorialeonline.net/ro/artic ... losind-php
problema peste care am dat eu tine de permisiunile de scriere/citire pe fisier (legate de sistemul de operare) astfel ca daca cineva vrea sa scrie intr-un fisier si altcineva sa citeasca/scrie tot din acelasi fisier in acelasi timp, la al doilea ii va da eroare de acces - pana nu termina primul de scris, urmatorul nu are acces la fisier (respectiv fisierul sqlite in acest caz). Personal, am scapat de problema folosind o latenta mai mare la citirea / scrierea datelor (asa am pus sqlite sa astepte intre interogari pana termina primul vizitator apoi il ia la rand pe urmatorul)
2) legat de volum mare de date, recomand sa ramai la mysqli si sa optimizezi interogarile si sa pui index pe coloanele folosite cel mai des, asta va optimiza mult interogarile (vezi tutoriale despre indecsi mysql pe net)
3) recomand sa folosesti clasa aia (sau una similara gen pdo) pentru ca iti va usura mult munca in caz ca vrei ulterior sa treci de la mysql la mysqli sau la sqlite sau la alte tipuri de baze de date.
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.

lexta
Average Member
Mesaje: 110
Membru din: Mie Noi 16, 2011 11:53 pm

Re: De la MySQL la SQLite3

Mesajde lexta » Dum Iul 12, 2015 8:25 pm

Am încercat să folosesc clasa aia dar n-am reuşit să-i dau de cap,

dacă folosesc o funcţie aşa:

Cod: Selectaţi tot

function sqlite_fetch_array($results)
{
    $resx = $results->fetchArray(SQLITE3_ASSOC);
    return $resx;
}

Dar îmi arată datele decât prima înregistrare din baza de date,
Dacă folosesc funcţia asta:

Cod: Selectaţi tot

while ($row = $results->fetchArray()) {
    var_dump($row);
}

Îmi arată cum trebuie.

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6380
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Re: De la MySQL la SQLite3

Mesajde Birkoff » Dum Iul 12, 2015 10:56 pm

lexta scrie:Am încercat să folosesc clasa aia dar n-am reuşit să-i dau de cap,


ai exemplu de folosire in directorul de exemple - http://sourceforge.net/projects/sqlclas ... p/download

folosind clasa aia uite cum poti sa extragi datele din sqlite

Cod: Selectaţi tot


require_once 
'sqlite3.inc.php'; // calea catre clasa sqlite3
$db = new SQLITE3_DB('cale/catre/fisierul/sqlite.db', '0666', '', '', 'nume_bd_din_sqlite');
if ( $db->open() === false ) {
   echo 'eroare conectare bd, verificati calea catre fisierul sqlite si numele bazei de date din acel fisier';
   echo $db->sql_error();
   exit;
}
$query = "SELECT * FROM nume_tabel";
$result = $db->query($query);
if ( ! $result ) {
    echo 'eroare la interogare, verificati sintaxa sql';
    echo $db->sql_error();
    exit;
}
while ($row = $db->fetch_array($result)) {
    echo '<pre>'.var_export($row, 1).'</pre>'; // aici afisezi sau faci ceva cu randurile din bd
}
$db->free_result();
// show all query if is needed (for debug)
// echo '<pre>'.var_export($db->sql_query_log,1).'</pre>';
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.

lexta
Average Member
Mesaje: 110
Membru din: Mie Noi 16, 2011 11:53 pm

Re: De la MySQL la SQLite3

Mesajde lexta » Dum Iul 12, 2015 11:04 pm

Eu vreau cumva să fac să creez câteva funcţii asemănătoare cu mysql gen sqlite_query,sqlite_fecth_array,sqlite_num_rows...
Doar să modific numele funcţiilor din fişiere, să nu stau să modific la fiecare mysql_query cu query-ul aferent sqlite, vreau decât să modific numele funcţiei, de ex din mysql_fetch_array în sqlite_fetch_array, pentru asta vreau să creez funcţiile respective..

Am făcut funcţia asta:

Cod: Selectaţi tot

function sqlite_fetch_array($results)
{
$array = array();
while ($row = $results->fetchArray()) {
array_push($array, $row);
}
return $array;
}


Dacă o folosesc aşa de ex:

Cod: Selectaţi tot

$query = sqlite_query($db,"SELECT * FROM `gs_players_rank` LIMIT 5000");

$roww = sqlite_fetch_array($query);

echo $roww['player_id'];


Primesc eroarea

Cod: Selectaţi tot

Notice: Undefined index: player_id in /home/.../.../test.php on line 13


dacă o folosesc aşa:

Cod: Selectaţi tot

$query = sqlite_query($db,"SELECT * FROM `gs_players_rank` LIMIT 5000");

$roww = sqlite_fetch_array($query);

var_dump($roww);


Îmi arată tot ce am cerut prin query...

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6380
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Re: De la MySQL la SQLite3

Mesajde Birkoff » Lun Iul 13, 2015 12:01 am

daca te uitai in cele 2 clase de la mine (mysqli si sqlite3) vedeai ca ce incerci tu sa faci deja am facut eu in acele clase :))
poti copia din acele clase functiile.
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.


Înapoi la “PHP Incepători”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 75 vizitatori