Diskuze: PDO Select

Ostatní jazyky SQL SQL a databáze PDO Select

Aktivity (1)
Avatar
Dominik Gavrecký:25.4.2015 22:30

Zdravím komunitu,

Chcel by som sa vás opýtať. Poslednou dobov ma mysqli začalo celkom obmedzovať tak som sa rozhodol prejsť na PDO. Je to zo začiatku ako španielská dedina a preto sa na vás obraciam s mojim problém.

<?php

$host = "localhost";
$user = "root";
$password = "";

$connect = new PDO('mysql:host=localhost;dbname=codepaste', $user, $password);
$connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$query = $connect->prepare("SELECT * FROM codepaste");
$row = $query->fetchAll();

print_r($row);

?>

Problém je že mi vráti prázdny Array. Prípadne mi pozrite connect rád sa priučím.

Ďakujem

Editováno 25.4.2015 22:32
Odpovědět 25.4.2015 22:30
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
Odpovídá na Dominik Gavrecký
Martin Konečný (pavelco1998):25.4.2015 22:35

Ahoj,

tvůj problém je ten, že metoda prepare() pouze dotaz "připraví", ale neprovede.

Řešení jsou dvě:

  1. místo prepare() použít query()
  2. po řádku $connect->prepare() udělej ještě:
$query->execute();
$row = $query->fetchAll();
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět  +1 25.4.2015 22:35
Go hard or go home!
Avatar
Dominik Gavrecký:25.4.2015 22:37

Ďakujem :) A ktoré z tých dvoch možností je lepšie používať ? Prípadne + -

Nahoru Odpovědět 25.4.2015 22:37
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
Odpovídá na Dominik Gavrecký
Martin Konečný (pavelco1998):25.4.2015 23:08

query() je lepší použít v případě, kdy nedosazuješ do dotazu nějaké hodnoty poslané uživatelem, což je tvůj případ.
Kdybys chtěl vyhledat záznamy dle podmínky, je lepší použít prepare() a execute() (tzv. prepared statements), protože to automaticky ošetří proti SQL injection, viz http://www.itnetwork.cz/…ion-a-obrana.

Nahoru Odpovědět  +1 25.4.2015 23:08
Go hard or go home!
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.