Black Friday Black Friday
Black Friday výprodej! Až 80 % extra bodů zdarma! Více informací zde
Avatar
Tomáš Kůželka:3. dubna 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. dubna 18:07
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:3. května 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. května 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.