شرح صفوف ومحتوى الفقرة
عند إنشاء قاعدة بيانات MySQL أو MariaDB جديدة عبر PDO، اتصل بالخادم أولاً بدون تحديد dbname في نص DSN، ثم حدد الترميز CHARACTER SET utf8mb4.
- ترميز MySQL القديم
utf8(أوutf8mb3) يدعم حتى 3 بايتات فقط للحرف ويفشل عند تخزين الرموز ذات الـ 4 بايتات. - استخدم دائماً
CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ciلضمان تخزين النصوص العربية والرموز التعبيرية بدقة كاملة. - بعد إنشاء قاعدة البيانات، انتقل إليها بالأمر
$pdo->exec("USE app_db")أو أعد الاتصال مع تضمينdbname=app_db;charset=utf8mb4.
تحديد CHARACTER SET utf8mb4 مع المقارنة utf8mb4_unicode_ci يضمن دعم الترميز الرباعي والترتيب الأبجدي الصحيح.
PHP
<?php
$dbName = 'closetag_store';
$ddl = "CREATE DATABASE IF NOT EXISTS $dbName
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci";
echo str_contains($ddl, 'utf8mb4_unicode_ci') ? "UTF8MB4 DDL Ready\n" : "Missing\n";