dpiegza
Goto Top

PHP Umstellung mysql connect

Hallo zusammen.

Ich bekomme immer diese Fehlermeldung / Warnung:
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /homepages/25/d68722908/htdocs/xtc_modified_COM/inc/xtc_db_connect.inc.php on line 24


Der Befehl der diesen verursacht ist der Befehl $$link = mysql_connect(...);

Ich weiß das es an der Umstellung zur neuen PHP-Version liegt, bekomme den Code aber nicht richtig geändert. Kann mir jemand eine korrekte Lösung zeigen, Anbei der aktuelle Code:


function xtc_db_connect($server = DB_SERVER, $username = DB_SERVER_USERNAME, $password = DB_SERVER_PASSWORD, $database = DB_DATABASE, $link = 'db_link') {
global $$link;

if (USE_PCONNECT == 'true') {
$$link = mysql_pconnect($server, $username, $password);
} else {
$$link = mysql_connect($server, $username, $password);
}

BOF - Dokuman - 2009-09-02 - Disable "STRICT" mode for MySQL 5!
$vers = @mysql_get_server_info();
BOF - vr - 2010-01-01 - Disable "STRICT" mode for MySQL 5!
if(substr($vers,0,1) > 4) @mysql_query("SET SESSION sql_mode='MYSQL40'");
if(substr($vers, 0, 1) > 4) @mysql_query("SET SESSION sql_mode=''");
EOF - vr - 2010-01-01 - Disable "STRICT" mode for MySQL 5!
EOF - Dokuman - 2009-09-02 - Disable "STRICT" mode for MySQL 5!

BOF - Dokuman - 2009-05-27 - revised database connection
if ($$link) mysql_select_db($database);
if ($$link) {
@mysql_select_db($database) or die('Database not available');
}
EOF - Dokuman - 2009-05-27 - revised database connection

return $$link;
}

Content-ID: 255493

Url: https://administrator.de/contentid/255493

Ausgedruckt am: 26.11.2024 um 15:11 Uhr

opalka
opalka 21.11.2014 um 09:11:34 Uhr
Goto Top
Hallo,

was spricht dagegen, einfach mysql_connect gegen mysqli_connect auszutauschen?

Gruß
DPiegza
DPiegza 21.11.2014 aktualisiert um 10:13:55 Uhr
Goto Top
Bekomme jz folgendes:
Warning: mysqli_connect(): (HY000/2002): Connection refused in /homepages/25/d68722908/htdocs/xtc_modified_COM/inc/xtc_db_connect.inc.php on line 24
Unable to connect to database server!

neuer Code:
<?php

function xtc_db_connect($server = DB_SERVER, $username = DB_SERVER_USERNAME, $password = DB_SERVER_PASSWORD, $database = DB_DATABASE, $link = 'db_link') {
global $$link;

if (USE_PCONNECT == 'true') {
$$link = mysqli_pconnect($server, $username, $password);
} else {
$$link = mysqli_connect($server, $username, $password);
}

BOF - Dokuman - 2009-09-02 - Disable "STRICT" mode for MySQL 5!
$vers = @mysql_get_server_info();
BOF - vr - 2010-01-01 - Disable "STRICT" mode for MySQL 5!
if(substr($vers,0,1) > 4) @mysql_query("SET SESSION sql_mode='MYSQL40'");
if(substr($vers, 0, 1) > 4) @mysql_query("SET SESSION sql_mode=''");
EOF - vr - 2010-01-01 - Disable "STRICT" mode for MySQL 5!
EOF - Dokuman - 2009-09-02 - Disable "STRICT" mode for MySQL 5!

BOF - Dokuman - 2009-05-27 - revised database connection
if ($$link) mysql_select_db($database);
if ($$link) {
@mysql_select_db($database) or die('Database not available');
}
EOF - Dokuman - 2009-05-27 - revised database connection

return $$link;
}
?>
opalka
opalka 21.11.2014 um 10:21:04 Uhr
Goto Top
Verbindungsdaten sind korrekt gesetzt? Sprichst du den Server über localhost:3306 oder einer anderen Adresse?
DPiegza
DPiegza 21.11.2014 um 10:31:49 Uhr
Goto Top
über localhost
Gersen
Gersen 21.11.2014 aktualisiert um 11:09:57 Uhr
Goto Top
Hallo,

ganz so trivial scheint mir die Lösung nicht zu sein. Wenn Du mit mysqli_connect anfängst, musst Du auch mit mysqli_query, mysqli_get_server_info und mysqli_select_db weitermachen - und jedes Mal die ggf. geänderte Syntax beachten. Im schlimmsten Fall kann sich das durch die ganze Anwendung ziehen.

Es gibt wohl auch Konvertierungs-Tools.

Gruß,
Gersen

PS: Es wäre vielleicht gut, wenn Du zum Posten des PHP-Codes die entsprechenden Code-Tags verwenden könntest. Es erleichtert das Lesen enorm...face-wink
opalka
opalka 21.11.2014 aktualisiert um 11:17:48 Uhr
Goto Top
Wie @Gersen schon schrieb, es muss natürlich dann auch überall mysql_xxx gegen mysqli_xxx ausgetauscht werden. Und kann es sein, dass es bei meiner Zeile 18 "<=" und nicht ">" heissen muss?

 
<?php
  function xtc_db_connect($server = DB_SERVER, $username = DB_SERVER_USERNAME, $password = DB_SERVER_PASSWORD, $database = DB_DATABASE, $link = 'db_link')  
  {
    global $$link;
    
    if (USE_PCONNECT == 'true')   
    {
      $$link = mysqli_pconnect($server, $username, $password);
    } 
    else 
    {
      $$link = mysqli_connect($server, $username, $password);
    }

    $vers = @mysqli_get_server_info();

    if(substr($vers, 0, 1) <= 4) @mysqli_query("SET SESSION sql_mode='MYSQL40'"); // <= anstatt >  
    if(substr($vers, 0, 1) > 4) @mysqli_query("SET SESSION sql_mode=''");  

    if ($$link) mysqli_select_db($database);

    if ($$link)
    {
      @mysqli_select_db($database) or die('Database not available');  
    }
    
    return $$link;
  }
?>
16568
16568 21.11.2014 um 21:44:39 Uhr
Goto Top
Leute, vergeßt es.

Der Threadstarter soll gefälligst dein Shopsystem aktualisieren, dann erledigt sich das von ganz alleine...


Lonesome Walker