2016-04-28 4 views
5

verbinden Ich versuche, eine offene Warenkorb-Anwendung mit PHP zu machen, und ich möchte es eine SQL-Server-Datenbank nicht mysql-Datenbank verbinden und ich habe Folgendes Fehler: Call to undefined function DB\mssql_connect(), und ich stellte meine Config-Datei wie folgt aus:wie eine Opencart-Anwendung mit einer SQL-Server-Datenbank mit PHP

<?php 
// HTTP 
define('HTTP_SERVER', 'http://localhost/restaurant/admin/'); 
define('HTTP_CATALOG', 'http://localhost/restaurant/'); 

// HTTPS 
define('HTTPS_SERVER', 'http://localhost/restaurant/admin/'); 
define('HTTPS_CATALOG', 'http://localhost/restaurant/'); 

// DIR 
define('DIR_APPLICATION', 'E:/my work/wamp/www/restaurant/admin/'); 
define('DIR_SYSTEM', 'E:/my work/wamp/www/restaurant/system/'); 
define('DIR_IMAGE', 'E:/my work/wamp/www/restaurant/image/'); 
define('DIR_LANGUAGE', 'E:/my work/wamp/www/restaurant/admin/language/'); 
define('DIR_TEMPLATE', 'E:/my work/wamp/www/restaurant/admin/view/template/'); 
define('DIR_CONFIG', 'E:/my work/wamp/www/restaurant/system/config/'); 
define('DIR_CACHE', 'E:/my work/wamp/www/restaurant/system/storage/cache/'); 
define('DIR_DOWNLOAD', 'E:/my work/wamp/www/restaurant/system/storage/download/'); 
define('DIR_LOGS', 'E:/my work/wamp/www/restaurant/system/storage/logs/'); 
define('DIR_MODIFICATION', 'E:/my work/wamp/www/restaurant/system/storage/modification/'); 
define('DIR_UPLOAD', 'E:/my work/wamp/www/restaurant/system/storage/upload/'); 
define('DIR_CATALOG', 'E:/my work/wamp/www/restaurant/catalog/'); 

// DB 
define('DB_DRIVER', 'mssql'); 
define('DB_HOSTNAME', 'localhost'); 
define('DB_USERNAME', 'root'); 
define('DB_PASSWORD', ''); 
define('DB_DATABASE', 'AndlusMarket'); 
define('DB_PORT', '1433'); 
define('DB_PREFIX', 'oc_'); 

ich eine Menge für eine Lösung gesucht, aber viele Leute sagten, es zu schwierig ist, kann mir jemand dabei helfen?

+0

Welche Version von PHP? 'mssql_ *' Funktionen wurden aus PHP 7 entfernt. Sie sollten wahrscheinlich ['sqlsrv_ *' functions] (http://php.net/manual/en/book.sqlsrv.php) verwenden, um eine Verbindung zu einem SQL Server statt – ImClarky

+0

herzustellen php 5.1.12 @ImClarky das ist die Version, die ich benutze –

+0

Versuchen Sie es http://StackOverflow.com/questions/16558056/how-to-connect-opencart-with-mssql-server –

Antwort

2

ersetzen könnte sich ändern Ich denke, du solltest deine Frage aktualisieren und spezifisch für die Opencart-Version sein. Kein Problem, in der neueren Version gibt es eine Klasse namens mpdo. Sie müssen also nur

define('DB_DRIVER', 'mpdo'); 
try { 
    $this->connection = new \PDO("mysql:host=" . $hostname . ";port=" . $port . ";dbname=" . $database, $username, $password, array(\PDO::ATTR_PERSISTENT => true)); 
} catch(\PDOException $e) { 
    throw new \Exception('Failed to connect to database. Reason: \'' . $e->getMessage() . '\''); 
} 

$this->connection->exec("SET NAMES 'utf8'"); 
$this->connection->exec("SET CHARACTER SET utf8"); 
$this->connection->exec("SET CHARACTER_SET_CONNECTION=utf8"); 
$this->connection->exec("SET SQL_MODE = ''"); 

es ersetzen mit

try { 
    $this->connection = new \PDO("sqlsrv:Server=" . $hostname . ";port=" . $port . ";Database=" . $database, $username, $password); 
} catch(\PDOException $e) { 
    throw new \Exception('Failed to connect to database. Reason: \'' . $e->getMessage() . '\''); 
} 
$this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
+0

das ist nett es gab mir Ausnahme konnte nicht mit der Datenbank verbinden –

0

Sie müssen PDO verwenden, um Ihre OpenCart

verbinden

ich PDO-Klasse für MySQL erstellt haben Sie von OpenCart PDO

herunterladen können Sie in dieser Klasse setzen müssen

{your opencart folder} > system >database > pdo.php 

Klassendatei erstellen Name mit pdo.php

Ersetzen Sie einfach Klassenname mit DBpdo

einfach die Zeichenfolge in der Klasse ersetzen

$this->params->connstr = "sqlsrv:Server={$host};dbname={$name};charset={$charset}"; 

und Sie müssen in der config.php

define('DB_DRIVER', 'PDO'); 

Sie

$this->dbh->exec($this->options['PDO::MYSQL_ATTR_INIT_COMMAND']); 

mit

$this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
+0

Konnte den Datenbanktreiber PDO nicht laden! es gibt mir diesen Fehler? –

+0

müssen Sie den Klassennamen DBpdo und definieren ('DB_DRIVER', 'pdo'); –

+0

was meinst du mit du musst den Klassennamen DBpdo geben? –