<?php
// =============================================================================
// 1. DATABASE CONFIGURATION & CONNECTION
// =============================================================================
$host = '127.0.0.1';
$db = 'my_database';
$user = 'root';
$pass = 'password123';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // Throw exceptions on error
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, // Fetch results as associative array
PDO::ATTR_EMULATE_PREPARES => false, // Use real prepared statements
];
try {
$pdo = new PDO($dsn, $user, $pass, $options);
echo "<h2>Database connection established successfully!</h2>";
} catch (\PDOException $e) {
die("Database connection failed: " . $e->getMessage());
}
echo "<hr>";
// =============================================================================
// 2. CREATE (Insert a new user)
// =============================================================================
$firstName = 'John';
$lastName = 'Doe';
$email = '[email protected]';
// Prepare query to prevent SQL Injection
$sqlInsert = "INSERT INTO users (first_name, last_name, email) VALUES (:first_name, :last_name, :email)";
$stmtInsert = $pdo->prepare($sqlInsert);
// Execute with data
$stmtInsert->execute([
'first_name' => $firstName,
'last_name' => $lastName,
'email' => $email
]);
// Get the ID of the newly inserted row
$newId = $pdo->lastInsertId();
echo "<strong>[CREATE]</strong> User successfully added with ID: " . $newId . "<br>";
// =============================================================================
// 3. UPDATE (Modify the newly created user)
// =============================================================================
$newEmail = '[email protected]';
$sqlUpdate = "UPDATE users SET email = :email WHERE id = :id";
$stmtUpdate = $pdo->prepare($sqlUpdate);
$stmtUpdate->execute([
'email' => $newEmail,
'id' => $newId
]);
echo "<strong>[UPDATE]</strong> Email for user ID {$newId} has been updated.<br>";
echo "<hr>";
// =============================================================================
// 4. READ (Fetch all users into an HTML table)
// =============================================================================
// Use query() since no user input/variables are used in this SQL string
$stmtSelect = $pdo->query("SELECT id, first_name, last_name, email FROM users");
$users = $stmtSelect->fetchAll();
echo "<h3>[READ] List of users in the database:</h3>";
if (!empty($users)) {
echo '<table border="1" cellpadding="5" style="border-collapse: collapse;">';
echo '<tr><th>ID</th><th>First Name</th><th>Last Name</th><th>E-mail</th></tr>';
foreach ($users as $row) {
echo '<tr>';
// htmlspecialchars() prevents XSS attacks
echo '<td>' . htmlspecialchars($row['id']) . '</td>';
echo '<td>' . htmlspecialchars($row['first_name']) . '</td>';
echo '<td>' . htmlspecialchars($row['last_name']) . '</td>';
echo '<td>' . htmlspecialchars($row['email']) . '</td>';
echo '</tr>';
}
echo '</table>';
} else {
echo "No users found in the database.<br>";
}
echo "<hr>";
// =============================================================================
// 5. DELETE (Remove the test user to keep the DB clean)
// =============================================================================
$sqlDelete = "DELETE FROM users WHERE id = ?";
$stmtDelete = $pdo->prepare($sqlDelete);
$stmtDelete->execute([$newId]);
echo "<strong>[DELETE]</strong> Test user with ID {$newId} has been deleted to keep the database clean.";MySQL
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
MySQL
Референца за `set.mysqlinfo.php` со подобрена типографија и навигација.
MySQL драјвери и додатоци
PHP нуди неколку MySQL драјвери и додатоци за пристап и ракување со MySQL.
Разликите и функционалноста на MySQL екстензиите се опишани во прегледот на овој дел.
Наведените екстензии го поддржуваат MySQL протоколот. Примери за компатибилни бази на податоци се » MariaDB Server, » MySQL Server, » Percona Server for MySQLПрепорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во » TiDB.
- Преглед на MySQL PHP драјвери
- MySQLi — MySQL Подобрена екстензија
- Преглед
- Водич за брз почеток
- Installing/Configuring
- mysqli Екстензијата и Постојани врски
- Претходно дефинирани константи
- Белешки
- mysqli Екстензија Функции резиме
- mysqli — mysqli класа
- mysqli_stmt — Класата mysqli_stmt
- mysqli_result — Класата mysqli_result
- mysqli_driver — Класата mysqli_driver
- mysqli_warning — Поставува режим за известување за грешки на mysqli
- mysqli_sql_exception — Преземи следно предупредување
- — Враќа SQLSTATE код за грешка
- Дневник на промени
- Mysql_xdevapi
- Installing/Configuring
- Претходно дефинирани константи
- Дневник на промени
- Примери
- Mysql_xdevapi Функции
- mysql_xdevapi\BaseResult — BaseResult интерфејс
- mysql_xdevapi\Client — Client класа
- mysql_xdevapi\Collection — Collection класа
- mysql_xdevapi\CollectionAdd — CollectionAdd класа
- mysql_xdevapi\CollectionFind — CollectionFind класа
- mysql_xdevapi\CollectionModify — CollectionModify класа
- mysql_xdevapi\CollectionRemove — CollectionRemove класа
- mysql_xdevapi\ColumnResult — Класа ColumnResult
- mysql_xdevapi\CrudOperationBindable — Интерфејс CrudOperationBindable
- mysql_xdevapi\CrudOperationLimitable — Интерфејс CrudOperationLimitable
- mysql_xdevapi\CrudOperationSkippable — Интерфејс CrudOperationSkippable
- mysql_xdevapi\CrudOperationSortable — Интерфејс CrudOperationSortable
- mysql_xdevapi\DatabaseObject — Интерфејс DatabaseObject
- mysql_xdevapi\DocResult — Класа DocResult
- mysql_xdevapi\Exception — Класа Exception
- mysql_xdevapi\Executable — Интерфејс Executable
- mysql_xdevapi\ExecutionStatus — Класа ExecutionStatus
- mysql_xdevapi\Expression — Класа Expression
- mysql_xdevapi\Result — Класа Result
- mysql_xdevapi\RowResult — Класа RowResult
- mysql_xdevapi\Schema — Класа Schema
- mysql_xdevapi\SchemaObject — Интерфејс SchemaObject
- mysql_xdevapi\Session — Класа Session
- mysql_xdevapi\SqlStatement — Класа SqlStatement
- mysql_xdevapi\SqlStatementResult — Класа SqlStatementResult
- mysql_xdevapi\Statement — Класа Statement
- mysql_xdevapi\Table — Класа Table
- mysql_xdevapi\TableDelete — Класа TableDelete
- mysql_xdevapi\TableInsert — Класа TableInsert
- mysql_xdevapi\TableSelect — Класа TableSelect
- mysql_xdevapi\TableUpdate — Класа TableUpdate
- mysql_xdevapi\Warning — Класа Warning
- MySQL (Оригинал) — Оригинална MySQL API
- Mysql_xdevapi — MySQL Нативен драјвер