Autor Zpráva
Vilak
Profil
Zdarec. Mám script a nechápu, proč mi nefunguje.

                $stmt = $conn->prepare("UPDATE `tags` SET 
                `title` = $title
            WHERE `page` = $page");
        $stmt->execute(); // řádek  54

vypíše mi to: Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'index.php' in 'where clause'' in C:\xampp\htdocs\esport\include\scripts\edit-tags.php:54 Stack trace: #0 C:\xampp\htdocs\esport\include\scripts\edit-tags.php(54): PDOStatement->execute() #1 {main} thrown in C:\xampp\htdocs\esport\include\scripts\edit-tags.php on line 54

Co s tím? Díky za odpovědi.
Dan Charousek
Profil
Vilak:
Chybí ti uvozovky okolo $page.

Ale když už používáš PDO, tak proč nepoužíváš otazníčky?

$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name LIKE '%?%'");
$stmt->execute(array($_GET['name']));
Zdroj: php.net/manual/en/pdo.prepared-statements.php
Vilak
Profil
Ah,, díky moc! Nevím, u tohoto nemám potřebu. Třeba u podrobného vyhledávání to mám, kde si vlastně díky tomu tvořím sql příkaz takový, jaký potřebuju. Ale tady ta potřeba není, protože vím, že tam bude vždy přesně ta proměnná, tak proč tam psat otazníčky?

Proč zde používat otazníčky?

$stmt = $conn->prepare("UPDATE `tags` SET 
                `title` = '$title',
                `description` = '$description',
                `keywords` = '$keywords',
                `t_card` = '$t_card',
                `t_site` = '$t_site',
                `t_creator` = '$t_creator',
                `og_url` = '$og_url',
                `og_title` = '$og_title',
                `og_description` = '$og_description',
                `og_image` = '$og_image',
                `fb_pages` = '$fb_pages',
                `favicon` = '$favicon'
            WHERE `page` = '$page'");
        $stmt->execute();

Ale fakt mě to zajímá, jestli je to k něčemu lepší. Díky.
Dan Charousek
Profil
Vilak:
Když použiješ otazníčky, hodnoty se automaticky escapují. Tady (v tvém kódu) žádné nevidím.
pcmanik
Profil
Vilak:
Je to kvôli ochrane pred SQL Injection a taktiež to má ďalšie výhody o ktorých si môžes prečítať na odkaze, ktorý dal Dan Charousek
Vilak
Profil
Dobře, děkuji.

Jinak vyřešeno.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: