Common ways to connect to MySQL databases are using mysqli extensions and PDO. 1. Use mysqli to extend the recommended object-oriented method, with clear code, and you need to ensure that extension=mysqli is enabled in php.ini; 2. Use PDO is suitable for compatibility with multiple databases, supports exception handling and set character set to utf8mb4. Frequently asked questions include username and password errors, database does not exist, host or port errors, PHP extensions not enabled, and firewall restrict access. These issues should be checked one by one to ensure successful connection.
Connecting to MySQL database is one of the most basic and common operations when using PHP for back-end development. Although the method is not complicated, many newbies are prone to errors during configuration and use. Let me briefly talk about several common methods and points that need to be paid attention to.

Extend connections using mysqli (recommended)
mysqli is currently the mainstream object-oriented or procedural database connection method, supporting functions such as preprocessing statements and multi-queries.
Basic writing method:

$host = 'localhost'; $user = 'root'; $password = ''; $database = 'test_db'; $conn = new mysqli($host, $user, $password, $database); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); }
- Make sure the mysqli extension is enabled and you can check whether
extension=mysqli
is enabled in php.ini. - If you are using a remote database, remember to modify
$host
to the corresponding address. - It is recommended to use an object-oriented approach, so the code structure is clearer.
Use PDO connection (suitable for situations where multiple databases need to be compatible)
PDO supports multiple database types. If you may migrate to other database systems in the future, such as PostgreSQL, it is more convenient to use PDO.
Sample code:

$host = 'localhost'; $db = 'test_db'; $user = 'root'; $pass = ''; $charset = 'utf8mb4'; $dsn = "mysql:host=$host;dbname=$db;charset=$charset"; $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC ]; try { $pdo = new PDO($dsn, $user, $pass, $options); } catch (\PDOException $e) { throw new \PDOException($e->getMessage(), (int)$e->getCode()); }
- Error mode and default return format can be controlled by setting options.
- Added exception handling suggestions, so that the problem can be located faster.
- Note that the character set is set to
utf8mb4
, otherwise Chinese garbled may appear.
Frequently Asked Questions and Precautions
Not connecting to the database is one of the most common problems for beginners. Here are some troubleshooting directions:
Incorrect username or password
Check for error spelling, or whether the database user permissions are correct.The database does not exist or is not created
To confirm whether the target database exists, you can first view it through phpMyAdmin or the command line.The host name or port is incorrect
The default is localhost and 3306. If the database is deployed elsewhere, it needs to be changed to the host IP or domain name, and sometimes the port must be specified.PHP extension is not enabled
If you are using XAMPP or WAMP, make sure mysqli or pdo_mysql is loaded.Firewall restrict access
If you are connected to a remote database, confirm that the server firewall allows your IP to access port 3306.
Basically that's all. Connecting to the database itself is not difficult, but it takes some time to configure the environment and troubleshoot problems. As long as you get the parameters and extensions right, you can usually connect smoothly.
The above is the detailed content of how to connect to mysql database from php. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

TosecurelyconnecttoaremoteMySQLserver,useSSHtunneling,configureMySQLforremoteaccess,setfirewallrules,andconsiderSSLencryption.First,establishanSSHtunnelwithssh-L3307:localhost:3306user@remote-server-Nandconnectviamysql-h127.0.0.1-P3307.Second,editMyS

To add MySQL's bin directory to the system PATH, it needs to be configured according to the different operating systems. 1. Windows system: Find the bin folder in the MySQL installation directory (the default path is usually C:\ProgramFiles\MySQL\MySQLServerX.X\bin), right-click "This Computer" → "Properties" → "Advanced System Settings" → "Environment Variables", select Path in "System Variables" and edit it, add the MySQLbin path, save it and restart the command prompt and enter mysql--version verification; 2.macOS and Linux systems: Bash users edit ~/.bashrc or ~/.bash_

mysqldump is a common tool for performing logical backups of MySQL databases. It generates SQL files containing CREATE and INSERT statements to rebuild the database. 1. It does not back up the original file, but converts the database structure and content into portable SQL commands; 2. It is suitable for small databases or selective recovery, and is not suitable for fast recovery of TB-level data; 3. Common options include --single-transaction, --databases, --all-databases, --routines, etc.; 4. Use mysql command to import during recovery, and can turn off foreign key checks to improve speed; 5. It is recommended to test backup regularly, use compression, and automatic adjustment.

Turn on MySQL slow query logs and analyze locationable performance issues. 1. Edit the configuration file or dynamically set slow_query_log and long_query_time; 2. The log contains key fields such as Query_time, Lock_time, Rows_examined to assist in judging efficiency bottlenecks; 3. Use mysqldumpslow or pt-query-digest tools to efficiently analyze logs; 4. Optimization suggestions include adding indexes, avoiding SELECT*, splitting complex queries, etc. For example, adding an index to user_id can significantly reduce the number of scanned rows and improve query efficiency.

When handling NULL values ??in MySQL, please note: 1. When designing the table, the key fields are set to NOTNULL, and optional fields are allowed NULL; 2. ISNULL or ISNOTNULL must be used with = or !=; 3. IFNULL or COALESCE functions can be used to replace the display default values; 4. Be cautious when using NULL values ??directly when inserting or updating, and pay attention to the data source and ORM framework processing methods. NULL represents an unknown value and does not equal any value, including itself. Therefore, be careful when querying, counting, and connecting tables to avoid missing data or logical errors. Rational use of functions and constraints can effectively reduce interference caused by NULL.

ForeignkeysinMySQLensuredataintegritybyenforcingrelationshipsbetweentables.Theypreventorphanedrecords,restrictinvaliddataentry,andcancascadechangesautomatically.BothtablesmustusetheInnoDBstorageengine,andforeignkeycolumnsmustmatchthedatatypeoftherefe

To check the MySQL version, you can use the following methods in the Windows command prompt: 1. Use the command line to view directly, enter mysql--version or mysql-V; 2. After logging in to the MySQL client, execute SELECTVERSION();; 3. Manually search through the installation path, switch to the MySQL bin directory and run mysql.exe--version. These methods are suitable for different scenarios, the first two are most commonly used, and the third one is suitable for situations where environment variables are not configured.

To reset the root password of MySQL, please follow the following steps: 1. Stop the MySQL server, use sudosystemctlstopmysql or sudosystemctlstopmysqld; 2. Start MySQL in --skip-grant-tables mode, execute sudomysqld-skip-grant-tables&; 3. Log in to MySQL and execute the corresponding SQL command to modify the password according to the version, such as FLUSHPRIVILEGES;ALTERUSER'root'@'localhost'IDENTIFIEDBY'your_new
