mysql_errno () & mysql_error() gibt nicht erwartete Fehlermeldung

G

gernie

Wenn man 2 zu einem MySQL-Server unter der Verwendung von mysql_connect oder
mysql_pconnect öffnet, dabei ist die erste Verbindung gültig, und die zweite nicht (in
meinem Code ist das Kennwort für die zweite Verbindung falsch), dann sollte eine
mysql_error() Fehlermeldung ausgegeben werden. Aber es gibt eine leere Zeichenfolge aus und mysql_errno return 0 mit
errno so als habe es kein Problem gegeben.

Beispiel:
<?php
echo "first connection<br><br>";
$conn1 = mysql_connect("localhost:3306","root","",true);
if($conn1 == false) {
echo "<hr>mysql_error : ".mysql_error()."<br>";
echo "mysql_errno : ".mysql_errno()."<hr>";
} else echo "ok connected 1";
echo "<hr>second connection<br><br>";
$conn2 = mysql_connect ("localhost:3306","root","2",true);
if($conn2 == false) {
echo "<hr>mysql_error : ".mysql_error()."<br>";
echo "mysql_errno : ".mysql_errno()."<hr>";
} else echo "ok connected 2";
?>

mfg gernie
 
Beide Befehle verwenden die zuerst aufgebaute Verbindung als Standardverbindung. Um die zweite zu nutzen, musst du den optionalen Parameter übergeben.

PHP:
echo mysql_error($conn2);
 
Ausgabe:
mysql_error :
mysql_errno : 0

Normalweise:
mysql_error : Access denied for user 'root2'@'localhost' (using password: YES)
mysql_errno : 1045
 
Ich habe dieses Mal mysql_error() den Namen der zweiten Verbindung hinzugefügt komme aber dennoch nicht auf die gewünschte Fehlermeldung

mfg gernie
 
Mit mehreren Connection würd ich sowieso auf Objektorientiert umsteigen. Ist einfacher und übersichtlicher.
http://professionelle-softwareentwicklung-mit-php5.de/programming-php.mysqli.html

PHP:
<?php 
class DB extends MySQLi{
    public function __construct($hostname, $username = '', $passwd = '',  $dbname = '', $port = 3306, $socket = '') {
        parent::__construct($hostname, $username, $passwd, $dbname, $port, $socket);        
        if (mysqli_connect_error()) throw new MySQLi_ConnectionException(mysqli_connect_error(), mysqli_connect_errno());
    }
 
    public function query($query) {
        $result = parent::query($query);
        if ($this->error) throw new MySQLi_QueryException($this->error, $this->errno);
    }
}

$db1 = new DB("localhost:3306", "root", "" , "myDatabase1");
$db2 = new DB("localhost:3306", "root", "2", "myDatabase2");

$sql1 = "SELECT 1";

$result = $db1->query($sql1);
if ($result) {
    while ($row = $result->fetch_assoc()) {
        // ...
    }
    $result->close();
}
 
$db1->close();
$db2->close();
?>
 
Zurück