Diskuze: Nefunguje připojení k DB přes PDO

PHP PHP Nefunguje připojení k DB přes PDO American English version English version

Avatar
pardal486
Člen
Avatar
pardal486:

Zdravím. Ano jsem tu zase a mám zase problém.Mám tyto zdrojové kódy:

// dbconnect.php
<?php

class dbconnect
{
    private $spojeni;

    function __construct($host,$user,$pass,$name)
    {
        $options = array
        (
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAME utf8"
        );
        $this->spojeni = @new PDO("mysql:host=$host;dbname=$name",$user, $pass, $options);
    }

    function query($query, $param=Array())
    {
        $navrat=$this->spojeni->prepare($query);
        $navrat->execute($param);
        return $navrat->rowCount();
    }

    function queryOne($query, $param=Array())
    {
        $navrat=$this->spojeni->prepare($query);
        $navrat->execute($param);
        return $navrat->fetch(PDO::FETCH_ASSOC);
    }

    function queryAll($query, $param=Array())
    {
        $navrat=$this->spojeni->prepare($query);
        $navrat->execute($param);
        return $navrat->fetchAll(PDO::FETCH_ASSOC);
    }
}

?>
// index.php
<?php
require "dbconnect.php";
$db = new dbconnect("localhost","root","","novinky");
?>

Ale místo připojení se k databázi mi to vypisuje tuto chybu:

Fatal error:  Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [1193] Unknown system variable 'NAME'' in C:\xampp\htdocs\Super slovak gaming\dbconnect.php:14
Stack trace:
#0 C:\xampp\htdocs\Super slovak gaming\dbconnect.php(14): PDO->__construct('mysql:host=loca...', 'root', '', Array)
#1 C:\xampp\htdocs\Super slovak gaming\index.php(3): dbconnect->__construct('localhost', 'root', '', 'novinky')
#2 {main}
  thrown in C:\xampp\htdocs\Super slovak gaming\dbconnect.php on line 14

Nevíte někdo co s tím? Toto mi vypisuje na localhostu i po nahrátí na webhosting (samozřejmě se správnými údaji k databázi).

Editováno 17.2.2013 1:17
Odpovědět 17.2.2013 1:16
Bite my shiny, metal ass!
Avatar
pardal486
Člen
Avatar
pardal486:

Prosím poraďte :(

Nahoru Odpovědět 19.2.2013 8:44
Bite my shiny, metal ass!
Avatar
Kit
Redaktor
Avatar
Odpovídá na pardal486
Kit:

Máš to napsáno v chybovém hlášení. Místo "SET NAME utf8" má být "SET NAMES utf8".

Nahoru Odpovědět 19.2.2013 10:11
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
pardal486
Člen
Avatar
Odpovídá na Kit
pardal486:

Aha a já myslel že system variable 'NAME' se myslí jméno db $name :D Díky

Nahoru Odpovědět 19.2.2013 14:26
Bite my shiny, metal ass!
Avatar
Kit
Redaktor
Avatar
Odpovídá na pardal486
Kit:

dbname=$name je na jiném místě a má jinou úlohu. SET NAMES utf8 nastavuje znakovou sadu.

Nahoru Odpovědět 19.2.2013 14:29
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
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 5 zpráv z 5.