Ich habe gerade eine Datenbank auf MySQL auf meinem Server erstellt. Ich möchte über meine Website mit PHP eine Verbindung dazu herstellen. Dies ist der Inhalt meiner Verbindungsdatei:
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'password';
$conn = mysql_connect($dbhost, $dbuser, $dbpass)
or die('Error connecting to mysql');
$dbname = 'epub';
mysql_select_db($dbname);
Ich kenne den Benutzernamen / die Passwörter und die IP-Adresse des Servers. Ich frage mich nur, woher ich weiß, welchen Port ich verwenden soll.
php
mysql
database
database-connection
port-number
109221793
quelle
quelle
Antworten:
Wenn Ihr MySQL-Server mit Standardeinstellungen ausgeführt wird, müssen Sie dies nicht angeben.
Der Standard-MySQL-Port ist 3306.
[aktualisiert, um die Verwendung von mysql_error () anzuzeigen]
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysql: '.mysql_error());
quelle
Wenn Sie unter Windows die Portnummer Ihres lokalen Hosts wissen möchten, auf dem MySQL ausgeführt wird, können Sie diese Abfrage auf dem MySQL-Befehlszeilenclient verwenden.
SHOW VARIABLES WHERE Variable_name = 'port'; mysql> SHOW VARIABLES WHERE Variable_name = 'port'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | port | 3306 | +---------------+-------+ 1 row in set (0.00 sec)
Sie erhalten die Portnummer, auf der MySQL ausgeführt wird.
quelle
Schau dir das an, Alter
<?php // we connect to example.com and port 3307 $link = mysql_connect('example.com:3307', 'mysql_user', 'mysql_password'); if (!$link) { die('Could not connect: ' . mysql_error()); } echo 'Connected successfully'; mysql_close($link); // we connect to localhost at port 3307 $link = mysql_connect('127.0.0.1:3307', 'mysql_user', 'mysql_password'); if (!$link) { die('Could not connect: ' . mysql_error()); } echo 'Connected successfully'; mysql_close($link); ?>
quelle
Wenn Sie Ihren Port als Variable haben möchten, können Sie PHP wie folgt schreiben:
$username = user; $password = pw; $host = 127.0.0.1; $database = dbname; $port = 3308; $conn = mysql_connect($host.':'.$port, $username, $password); $db=mysql_select_db($database,$conn);
quelle
Wenn Sie 'localhost' angeben, verwenden die Client-Bibliotheken standardmäßig den Dateisystem-System-Socket auf einem Unix-System. Probieren Sie den Wert mysql_default_socket aus php.ini (falls festgelegt) und dann den Wert my.cnf aus.
Wenn Sie eine Verbindung mit einem anderen Tool herstellen, geben Sie den Befehl "Variablen wie '% socket%' anzeigen" ein.
Wenn Sie einen Netzwerkport verwenden möchten (der etwas langsamer ist), geben Sie 127.0.0.1 oder eine physische Schnittstelle an, die dem Computer zugeordnet ist.
quelle
quelle
Dies ist eine reine PDO-Visualisierung, da die
mysql_*
Bibliothek veraltet ist.<?php // Begin Vault (this is in a vault, not actually hard-coded) $host="hostname"; $username="GuySmiley"; $password="thePassword"; $dbname="dbname"; $port="3306"; // End Vault try { $dbh = new PDO("mysql:host=$host;port=$port;dbname=$dbname;charset=utf8", $username, $password); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "I am connected.<br/>"; // ... continue with your code // PDO closes connection at end of script } catch (PDOException $e) { echo 'PDO Exception: ' . $e->getMessage(); exit(); } ?>
Beachten Sie, dass es bei dieser OP-Frage anscheinend nicht um Portnummern ging. Wenn Sie den Standardport von
3306
always verwenden, sollten Sie ihn aus dem Uri entfernen, dh dasport=$port;
Teil entfernen .Wenn Sie häufig die Ports ändern, sollten Sie die obige Portverwendung berücksichtigen, um die Wartbarkeit zu verbessern, wenn Änderungen an der
$port
Variablen vorgenommen werden.Einige wahrscheinliche Fehler, die von oben zurückgegeben wurden:
PDO Exception: SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it. PDO Exception: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: No such host is known.
Im folgenden Fehler kommen wir uns nach dem Ändern unserer Verbindungsinformationen zumindest näher :
PDO Exception: SQLSTATE[HY000] [1045] Access denied for user 'GuySmiley'@'localhost' (using password: YES)
Nach weiteren Änderungen sind wir jetzt wirklich nah dran, aber nicht ganz:
PDO Exception: SQLSTATE[HY000] [1049] Unknown database 'mustard'
Aus dem Handbuch zu PDO-Verbindungen :
quelle
Versuchen
$conn = mysql_connect($host, $username, $password, $port);
quelle
Die Portnummer 3306 wird für MySQL und Tomcat unter Verwendung des 8080-Ports verwendet. Weitere Portnummern stehen zum Ausführen der Server oder der Software zur Verfügung, unabhängig davon, was für unsere sofortige Kompilierung vorgesehen ist. 8080 ist die Standardnummer, sodass nur in der Eclipse-IDE ein Portfehler angezeigt wird. jvm und tomcat bevorzugen immer die 8080.3306 als Standardportnummer für MySQL. Deshalb möchten sie nicht jedes Mal als "localhost: 3306" erwähnt werden.
<?php $dbhost = 'localhost:3306'; //3306 default port number $dbhost='localhost'; is enough to specify the port number //when we are utilizing xammp default port number is 8080. $dbuser = 'root'; $dbpass = ''; $db='users'; $conn = mysqli_connect($dbhost, $dbuser, $dbpass,$db) or die ("could not connect to mysql"); // mysqli_select_db("users") or die ("no database"); if(! $conn ) { die('Could not connect: ' . mysqli_error($conn)); }else{ echo 'Connected successfully'; } ?>
quelle
127.0.0.1
anstelle vonlocalhost
, sonst funktioniert der Portwechsel nicht .