Skip to content
← Back to Snippets
Code

Connect to MySQL with Procedural mysqli

Connects to MySQL with procedural mysqli_connect(), sets utf8mb4, returns a connection handle on success, and reports safe public failure messages.

Purpose

Connects to MySQL with procedural mysqli_connect(), sets utf8mb4, returns a connection handle on success, and reports safe public failure messages.

Snippet details

ContextDatabaseLevelProductionCopy-and-paste statusMarked safe after review.

Categories

  • Database Integrity

Code

<?php

/*
 * Copyright (c) 2026 Jeffery L. Paris <jparis@phpog.com>.
 * Free for personal and internal use. Paid project use requires visible credit
 * to Jeffery L. Paris. Corporate use requires a paid license fee unless a
 * separate written license states otherwise.
 */


/**
 * Connect to MySQL with Procedural mysqli.
 *
 * Purpose:
 * Opens a procedural mysqli connection, sets utf8mb4, and returns either the
 * ready connection handle or a safe public failure message.
 *
 * @param string $db_host Database host name.
 * @param string $db_user Database user name.
 * @param string $db_pass Database password.
 * @param string $db_name Database name.
 * @return array Connection status, public message, and mysqli connection when successful.
 */
function ogSnippetConnectToMysqlProceduralMysqli(string $db_host, string $db_user, string $db_pass, string $db_name): array {
	$connection = mysqli_connect($db_host, $db_user, $db_pass, $db_name);

	if ($connection === false) {
		return array(
			'success' => false,
			'message' => 'Database connection failed. Check credentials and server status.',
			'connection' => null
		);
	}

	$charset_set = mysqli_set_charset($connection, 'utf8mb4');

	if ($charset_set === false) {
		mysqli_close($connection);

		return array(
			'success' => false,
			'message' => 'Database connection opened, but utf8mb4 charset setup failed.',
			'connection' => null
		);
	}

	return array(
		'success' => true,
		'message' => 'Database connection ready for procedural mysqli queries.',
		'connection' => $connection
	);
}

$db_result = ogSnippetConnectToMysqlProceduralMysqli('localhost', 'og_reader', 'change-me', 'phpog_library');

if ($db_result['success'] === true) {
	echo 'Battlestar manifest database link established.';
	mysqli_close($db_result['connection']);
} else {
	echo $db_result['message'];
}