Thomas. Skrevet 29. januar 2010 Skrevet 29. januar 2010 Hei, finnes det en PDO-funksjon som er lik mysql_num_rows() funksjonen?
Alex Moran Skrevet 29. januar 2010 Skrevet 29. januar 2010 Ikke annet enn pdo->query("SELECT FOUND_ROWS()")
Thomas. Skrevet 30. januar 2010 Forfatter Skrevet 30. januar 2010 public function dbAntallRows ( ) { $this->con(); $rows = $this->db->prepare ( 'SELECT found_rows() AS rows', array(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true) ); $rows->execute(); $rowsAntall = $rows->fetch(PDO::FETCH_OBJ)->rows; $rows->closeCursor(); return $rowsAntall; } Printer den ut antall rows av forrige spørring? (return $this->db->query($sql);) Så jeg kan fint ha mange etterhverandre?
Ernie Skrevet 30. januar 2010 Skrevet 30. januar 2010 Ikke annet enn pdo->query("SELECT FOUND_ROWS()") Ehh ... jo?
Alex Moran Skrevet 30. januar 2010 Skrevet 30. januar 2010 Ehm, nei? For most databases, PDOStatement::rowCount() does not return the number of rows affected by a SELECT statement. Instead, use PDO::query() to issue a SELECT COUNT(*) statement with the same predicates as your intended SELECT statement, then use PDOStatement::fetchColumn() to retrieve the number of rows that will be returned. Your application can then perform the correct action.
Ernie Skrevet 30. januar 2010 Skrevet 30. januar 2010 ... og det skal da bety at det ikke fungerer med MySQL? Det fungerer iallfall her.
Thomas. Skrevet 30. januar 2010 Forfatter Skrevet 30. januar 2010 Printer den ut antall rows av forrige spørring? (return $this->db->query($sql);)Så jeg kan fint ha mange etterhverandre?
Thomas. Skrevet 30. januar 2010 Forfatter Skrevet 30. januar 2010 Og, kan man ikke bruke mysql_real_escape_string med PDO ?
Ernie Skrevet 31. januar 2010 Skrevet 31. januar 2010 Jo, men det blir helt unødvendig hvis/når man bruker «prepared statements». Uannsett har man PDO->quote, så mysql_real_escape_string er helt unødvendig å bruke når man benytter PDO.
Thomas. Skrevet 31. januar 2010 Forfatter Skrevet 31. januar 2010 Jo, men det blir helt unødvendig hvis/når man bruker «prepared statements». Uannsett har man PDO->quote, så mysql_real_escape_string er helt unødvendig å bruke når man benytter PDO. Hvordan skal dette løses da? Må jeg validere all input med preg_match eller lignende?? Jeg skriver ' i inputen. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''''' Kode: public function QuerySelect ( $sql ) { try { $this->con(); return $this->db->query($sql); } catch ( Exception $error ) { echo 'Det oppsto en feil ved henting av data fra databasen! Venligst rapporter dette til admin!'; echo var_dump($this->db->query($sql)); die(); } } $mottaker = $_POST['mottaker']; $sjekk_bruker = $data->QuerySelect('SELECT * FROM ' . TABELL_BRUKERE . ' WHERE nick = \'' . $mottaker . '\'');
Ernie Skrevet 31. januar 2010 Skrevet 31. januar 2010 Hvis du leser innlegget mitt en gang til sier jeg at du enten må bruke «prepared statements» eller PDO->quote. Ut fra koden gjør du vel ingen av delene.
AlecTBM Skrevet 31. januar 2010 Skrevet 31. januar 2010 Får jeg spørre hvorfor du lager en egen klasse for å kjøre SQL spørringer? Er jo det PDO gjør for deg. Ang rowCount så står det at for de fleste databasene så returnerer den ikke antall rader Om dette gjelder i MySQL vet jeg ikke siden det begynner å bli en god stund siden jeg har brukt MySQL database (før jeg begynte med PDO), nå bruker jeg SQLite3 der rowCount ikke returnerer på SELECT, og derfor bruker jeg den ikke. For å bruke "prepared statements" så blir det noe ala dette: $pre = $PDO->prepare("SELECT * FROM ". TABELL_BRUKERE ." WHERE nick=:nick"); $pre->execute(array(':nick' => $mottaker)); print_r($pre->fetchAll()); Dette var et kjapt eksempel. Var litt usikker på om man kunne bruke parametere på tabell navn, så gjorde det slik (er jo tross alt en konstant)
Thomas. Skrevet 31. januar 2010 Forfatter Skrevet 31. januar 2010 (endret) Så, jeg kan ikke kjøre noe prepare() før query() i funksjonen? Hvis du leser innlegget mitt en gang til sier jeg at du enten må bruke «prepared statements» eller PDO->quote. Ut fra koden gjør du vel ingen av delene. Når jeg prøver det (quote), får jeg: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\'''' Mulig jeg gjør det helt feil, da? $sjekk_bruker = $data->QuerySelect('SELECT * FROM ' . TABELL_BRUKERE . ' WHERE nick = \'' . $data->db->quote($mottaker) . '\''); Endret 31. januar 2010 av Thomas.
Thomas. Skrevet 31. januar 2010 Forfatter Skrevet 31. januar 2010 Les posten MIN også en gang til Man kan ikke bruke prepare før query? Kun execute?
AlecTBM Skrevet 31. januar 2010 Skrevet 31. januar 2010 man skal ikke bruke query Eksemplet mitt returnerer alle treff
Ernie Skrevet 31. januar 2010 Skrevet 31. januar 2010 Så, jeg kan ikke kjøre noe prepare() før query() i funksjonen? Hvis du leser innlegget mitt en gang til sier jeg at du enten må bruke «prepared statements» eller PDO->quote. Ut fra koden gjør du vel ingen av delene. Når jeg prøver det (quote), får jeg: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\'''' Mulig jeg gjør det helt feil, da? $sjekk_bruker = $data->QuerySelect('SELECT * FROM ' . TABELL_BRUKERE . ' WHERE nick = \'' . $data->db->quote($mottaker) . '\''); Du må droppe ' ' rundt verdiene du setter inn. Quote fikser det for deg hvis nødvendig.
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå