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í.
Avatar
Tomáš Kůželka:3.4.2018 18:07

Zdravím. Mám v PC webovou stránku. Která má ukládání přes MySQl, jenže v kódu mám věci co podporují jen ve verzi PHP 7. A to připojení MySQL naopak na verzi 7 nefunguje jelikož syntaxe jsou na verzi 5.6?. Dokázal by mi někdo pomocí to předělat na ty nové? Zkoušel jsem to a přestalo mi to fungovat, takže dělám stále někde chybu. Děkuji za pomoc.

<?php
        /* DATABASE CONFIGURATION */
define('DB_SERVER', 'hosting');
define('DB_USERNAME', 'uzivatel');
define('DB_PASSWORD', 'heslo');
define('DB_DATABASE', 'nazev');
        function getDB()
{
    $dbHost = DB_SERVER;
    $dbUser = DB_USERNAME;
    $dbPass = DB_PASSWORD;
    $dbName = DB_DATABASE;
    try
{
        $dbConnection = new PDO("mysql:host=$dbHost;dbname=$dbName;charset=utf8", $dbUser, $dbPass);
$dbConnection->exec("set names utf8");
$dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
        $dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        return $dbConnection;
    }
catch (PDOException $e)
{
        echo 'pripojeni k databazi bylo neuspesne: ' . $e->getMessage();
    }
}
        ?>
 
Odpovědět
3.4.2018 18:07
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:3.5.2018 15:40

Jakou chybu ti to pise? Kod ktery jsi dal je dobre nebo spatne?

$dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
        $dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

To asi neni treba nastavovat.

return $dbConnection;

Nevim, zda z try jde returnovat, ja bych to dal az na konec funkce. Ja mam v try ciste jenom connect a ukladam si ho v classe do promenne.

function connect($cfg)
{
try     {
        $this->conn = new PDO('mysql:host='.$cfg['host'].';dbname='.$cfg['db'], $cfg['user'], $cfg['psw'], $cfg['opt']);
        }
catch (PDOException $e)
        {
        $this->error($e->getMessage());
        }
}

Ted nemuzu zrovna najit tu spravnou class. Opt nastavuji nejak takto. Pouzivam bud normal pripojeni a nebo trvalejsi pro pro vice prikazu najednou. Prepare nepouzivam.

$cfg['opt'][PDO::MYSQL_ATTR_INIT_COMMAND] = 'SET NAMES utf8';
nebo
$cfg['opt'][PDO::ATTR_PERSISTENT] = true;
$cfg['opt'][PDO::ATTR_ERRMODE]    = PDO::ERRMODE_EXCEPTION;
 
Nahoru Odpovědět
3.5.2018 15:40
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 2 zpráv z 2.