2017-07-10 2 views
1

Ich muss PHP 5 Code in PHP7 konvertieren. Alle MySQL-Anweisungen werden mit einem Skript umgewandelt, die solche Funktionen definiert:mysqli_connect Unterschied zu mysql_connect

function mysql_connect($host, $username, $password){ 
    global $dbconnect; 
    $dbconnect = mysqli_connect($host, $username, $password); 
    return $dbconnect; 
} 

Das Schöne daran ist - es auf php7 funktioniert.

Jetzt habe ich alle Skripte mit mysqli_connect neu geschrieben. Allerdings schlägt die erste Funktion mit mysqli fehl.

mysqli_connect(): (HY000/1044): Access denied for user 

Wenn ich wieder nach mysql_connect schale es funktioniert und nicht wieder bei dem nächsten Mysqli Befehl.

Warum?

EDIT: vollständige Code der connect:

function db_connect() 
{ 
    global $db_sql_hostname,$db_sql_database,$db_sql_user,$db_sql_password; 
    require_once 'db-config.php'; 
    global $db_handle;  
    $db_handle = mysqli_connect($db_sql_hostname, $db_sql_user, $db_sql_password, $db_sql_database) or die("Konnte nicht zum mySQL-Server verbinden: ".mysqli_error()); 
    mysqli_select_($db_sql_database, $db_handle) or die("Konnte die Datenbank ".$db_sql_database." nicht oeffnen: ".mysqli_error());  
    return $db_handle; 
} 

Beachten Sie, dass alles, was mit mysql_ Befehle funktioniert. Die Variablen sind korrekt!

EDIT2: Das ist db-config.php

<?php 
    $db_sql_hostname = "hostIP"; 
    $db_sql_database = "dbname"; 
    $db_sql_dbuser  = "dbuser"; 
    $db_sql_dbpassword = "dbpassowrd"; 
?> 
+0

Was ist die vollständige Fehlermeldung? Sie können den Benutzer/Host verdecken, wenn Sie möchten. – aynber

+0

Haben Sie eine Datenbank angegeben, zu der eine Verbindung hergestellt werden soll? Ich hatte es als der vierte Parameter in mysqli_connect Aufruf. –

+0

Ihr Code ruft 'mysqli_connect' wahrscheinlich nicht die richtigen Parameter ... –

Antwort

1

Sie sind TRUE als Datenbankname (vierte Parameter von mysqli_connect) vorbei, die zum Fehler:

_Warning: mysqli_connect(): (HY000/1044): Zugriff verweigert für Benutzer '... '@' ...' to database '1' in ...

ändern die Zeile:

$db_handle = mysqli_connect($db_sql_hostname, $db_sql_dbuser, $db_sql_dbpassword) or die("Konnte nicht zum mySQL-Server verbinden: ".mysqli_error()); 
+0

Nun wechselt der Fehler in die nächste Zeile. Mysqli_select_db() erwartet, dass Parameter 1 mysqli ist. –

+0

Sie haben mysqli_select_db() 'in dem Code, den Sie hier gepostet haben, nicht erwähnt, also wäre mehr Code von Ihrer Seite erforderlich. Übergeben Sie aber '$ db_handle' an' mysqli_select_db() '? –

+0

Ich habe die volle Funktion hinzugefügt. Ich überlasse den Griff. –

0

mysqli_connect erfordert die Parameter mysqli_connect(ip,user,password,database)

wo als mysql_connect Angabe erfordert mysql_connect(ip,user,password)

Damit die richtige Datenbank und die wahre Entfernung werden Sie Probleme

Quelle lösen: Dokumentation PHP

http://php.net/manual/en/function.mysqli-connect.php

http://php.net/manual/en/function.mysql-connect.php

+0

Ich habe den vorgeschlagenen Code veröffentlicht. Ich arbeite jedoch nicht. Der Fehler ist 'Warnung: mysqli_select_db() erwartet, dass Parameter 1 mysqli ist, String in ...' –

0

in Sie

function db_connect() 
{ 
    global $db_sql_hostname,$db_sql_database,$db_sql_user,$db_sql_password; 
    require_once 'db-config.php'; 
    global $db_handle;  
    $db_handle = mysqli_connect($db_sql_hostname, $db_sql_user, $db_sql_password, $db_sql_database) or die("Konnte nicht zum mySQL-Server verbinden: ".mysqli_error()); 
    mysqli_select_($db_sql_database, $db_handle) or die("Konnte die Datenbank ".$db_sql_database." nicht oeffnen: ".mysqli_error());  
    return $db_handle; 
} 

mysqli_select_()mysqli_select_db() und gibt $db_handle als ersten Parameter des dh dann den Namen sein, sollte die Datenbank funktionieren. myslqi_select_db($db_handle,$db_sql_database)

Sehen Sie sich diese Dokumentation für mehr Klarheit an. http://php.net/manual/en/mysqli.select-db.php

Verwandte Themen