PDO SQLite

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator

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

PDO SQLite

Mesajde lexta » Mie Mai 13, 2015 8:08 pm

Salut, am o problemă ..

Am funcţia

Cod: Selectaţi tot

function num_rows($dbgs,$string)
{
$count=$dbgs->prepare($string);
$count->execute();
return $count->rowCount();
}


Şi primesc eroarea

Cod: Selectaţi tot

Fatal error: Call to a member function execute() on a non-object in ..../functions.php on line 33


Dacă în loc de execute pun query aceeaşi eroare..



MarPlo
Senior Member
Mesaje: 885
Membru din: Mie Sep 24, 2008 9:32 am
Localitate: Braila
Contact:

Re: PDO SQLite

Mesajde MarPlo » Mie Mai 13, 2015 8:23 pm

Salut
Problema se fixeaza la linia asta:

Cod: Selectaţi tot

$count=$dbgs->prepare($string); 

Verifica cu var_dump() variabilele $dbs si $string.

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

Re: PDO SQLite

Mesajde lexta » Mie Mai 13, 2015 8:54 pm

Nu e de la linia aia, dacă o şterg tot aceeaşi eroare primesc..

MarPlo
Senior Member
Mesaje: 885
Membru din: Mie Sep 24, 2008 9:32 am
Localitate: Braila
Contact:

Re: PDO SQLite

Mesajde MarPlo » Mie Mai 13, 2015 9:46 pm

Normal ca daca o stergi primesti aceeasi eroare, deoarece $count nu rezulta a fi un obiect. Problema e la parametri functiei.

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

Re: PDO SQLite

Mesajde lexta » Mie Mai 13, 2015 9:48 pm

Am încercat toate variantele şi nimic, de ex la funcţia asta:

Cod: Selectaţi tot

function sqlite_num_rows($string
{
$dbgs = new PDO('sqlite:database.sqlite');
$table $dbgs->query("SELECT * FROM table where username = 'xxx'");
$count $table->rowCount();
return 
$count;
$dbgs->close();
}
 


primesc

Cod: Selectaţi tot


Fatal error
Call to a member function rowCount() on a non-object in /home/.../functions.php on line 21


Linia următoare este problema:

Cod: Selectaţi tot


$table 
$dbgs->query("SELECT * FROM table where username = 'xxx'");
 

MarPlo
Senior Member
Mesaje: 885
Membru din: Mie Sep 24, 2008 9:32 am
Localitate: Braila
Contact:

Re: PDO SQLite

Mesajde MarPlo » Joi Mai 14, 2015 10:07 am

Nu ma pricep la sqlite, dar din exemplu tau problema pare a fi la conectarea la acea baza de date si crearea obiectului $dbgs.
Din ce stiu, conectarea cu pdo la sqlite se face asa:

Cod: Selectaţi tot

$dbgs = new PDO('sqlite:/path/to/database.sdb3'); 

- "/path/to/" e calea catre directorul cu baza de date.
- extensia ".sdb2" daca pe server e sqlite 2.

- Ca sugestie, mai bine folosesti baza de date mysql, vei scapa de problemele care le cauzeaza sqlite.

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

Re: PDO SQLite

Mesajde lexta » Vin Mai 15, 2015 4:11 pm

Nu funcţionează

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

Re: PDO SQLite

Mesajde Birkoff » Sâm Mai 16, 2015 5:15 am

recomand sa folosesti clasa sql de aici http://sqlclassphp.sourceforge.net/inde ... hp-example
ai printre scripturi si exemplu de folosire cu sqlite2 si sqlite3 (am cateva proiecte in care folosesc clasa aia pe sqlite3)

printre avantajele clasei e ca iti arata si interogarile facute pe pagina respectiva (are un log) + ca e foarte simplu de folosit (daca vrei sa treci pe alt tip de baza de date doar modifici instantarea clasei pentru tipul de sql dorit, restul codului ramane la fel).
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.

nevvermind
Senior Member
Mesaje: 1264
Membru din: Mar Iun 22, 2010 3:17 pm

Re: PDO SQLite

Mesajde nevvermind » Sâm Mai 16, 2015 12:17 pm

Hai mai intai sa rezolvam problema inainte sa folosim alt framework. Altfel cum o sa invete?

Nu stiu cum ai tu setat erorile pe acolo, dar s-ar putea sa nu iti apara. Cel mai bine ii spui PDO sa explodeze la orice eroare - aka exceptii:

Cod: Selectaţi tot

$dbgs->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

Setarea de mai sus s-o faci cat mai devreme (cat mai aproape posibil de "new PDO()").

Apoi ruleaza din nou si da exceptia.

Si te-ai uitat la query() si/sau execute() ce returneaza? In primul rand "execute()" returneaza mereu un boolean, si nu poti chema metode pe un boolean; in al doilea rand "query()" poate returna un boolean in cazul unei erori, caz in care din nou se aplica regula de mai sus. Intotdeauna verifici daca a fost eroare sau nu inainte sa vezi rezultatul. Dar de asta se va asigura exceptia.

Cel mai bine foloseste prepared statement (execute()) pt securitate - cauta "pdo prepared statements sql injection".
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/

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

Re: PDO SQLite

Mesajde CristianG » Lun Mai 25, 2015 3:45 pm

Asa cum recomanda toti incercati sa folositi sql`uri care puteti sa faceti fata !

Aveti multe metode asa ca nu va aruncati la unele care va bate sau va incurcati cu ele daca incepeti un proiect este bine ca sa aveti o baza puternica de informati cand vine vorba de procesarea query`ului.


Înapoi la “PHP Incepători”

Cine este conectat

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