Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: php PDO dva zpusoby

Aktivity
Avatar
Samuel Kodytek
Tvůrce
Avatar
Samuel Kodytek:8.9.2013 7:08

Ahoj nedavno jsem narazil u php PDO na dva prikazy jen ted nevym jakej je vic bezpecnejsi.

Priklad #1:

$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);

A pak je ten klasickej Priklad #2:

$dotaz = $connection->prepare('INSERT
INTO `user`(`user`,`heslo`)
VALUES(?, ?)');
$parametry = array($jmeno, $heslo);

Tak je mezi nemi nakej rozdil v bezpecnosti webu? :)

Odpovědět
8.9.2013 7:08
There is more than one way to screw it
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Samuel Kodytek
David Hartinger:8.9.2013 8:47

Bezpečné jsou stejně :)

Nahoru Odpovědět
8.9.2013 8:47
You are the greatest project you will ever work on.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Samuel Kodytek
Kit:8.9.2013 8:54

Ohledně bezpečnosti jsou rovnocenné, raději však používám druhý způsob. Pole s parametry však dávám přímo jako parametr metody execute(), protože se mi to tak nejvíc líbí.

Pokud mám SQL dotaz na více řádcích, používám Heredoc.

$dotaz = $connection->prepare(<<<EOT
INSERT INTO `user` (`jmeno`, `heslo`) VALUES (?, ?)
EOT
);
$dotaz->execute(array($jmeno, $heslo));

Je to jen příklad odvozený z tvého. Ve skutečnosti bych si nedovolil ukládat do databáze nešifrovaná hesla.

Nahoru Odpovědět
8.9.2013 8:54
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:8.9.2013 9:01

Mám dojem, že ten 2. způsob bugoval při vložení parametru klauzuli LIMIT, nevím, jestli to už opravili. Nikdy jsem se s tím nesetkal, ale pár lidí to tu psalo.

Nahoru Odpovědět
8.9.2013 9:01
You are the greatest project you will ever work on.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:8.9.2013 9:17
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);
Nahoru Odpovědět
8.9.2013 9:17
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:8.9.2013 9:37

Zajímavý atribut, díky. K produkčnímu využití PDO se teprve chystám, zatím jsem ho jen učil :)

Nahoru Odpovědět
8.9.2013 9:37
You are the greatest project you will ever work on.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:8.9.2013 9:40

Také jsem ten atribut dodnes neznal. Díky za dotaz.

Editováno 8.9.2013 9:41
Nahoru Odpovědět
8.9.2013 9:40
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Samuel Kodytek
Tvůrce
Avatar
Samuel Kodytek:8.9.2013 10:02

Dekuji :)

Nahoru Odpovědět
8.9.2013 10:02
There is more than one way to screw it
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 8 zpráv z 8.