۱۰ مهدی
گزارش گیری متن فارسی از دیتابیس توسط PHP
جامعه پی اچ پی ایجاد شده در ۲۶ اردیبهشت ۱۴۰۱

سلام زمانی که با PHP میخوایم از دیتابیس SELET کنیم مقادیر فارسی رو با ؟؟؟؟؟ توی خروجی نشون میده و اینکه آقای آوند توی این جلسه گقتند این رو هم قرار بدیم که من دقیقا نفهمیدم کجا مورد استفاده قرار میگیره:

$mysqli->set_charset('utf8');

آیا اصلا میشه توی دیتابیس مقداری رو با متن فارسی ذخیره کرد؟!

سلام دوست عزیز

بعد از ایجاد شیئ mysqli باید بهش مقدار بدید، در زیر یک نمونه رو میبینید

$mysqli = new mysqli("localhost","my_user","my_password","my_db");
$mysqli->set_charset("utf8");
محمد گازری ۲۶ اردیبهشت ۱۴۰۱، ۰۰:۴۹

فک میکنم متوجه سؤالم نشدید! کد من به شکل زیر هست:

$mysqli = new mysqli('localhost', 'root', '', 'world');
$mysqli->set_charset("utf8");
$sqlQuery=
    "select fullname from people where id = 7;
";
$results = $mysqli->query($sqlQuery);
print_r($results->fetch_all());

و من fullname رو توی دیتابیس فارسی ذخیره کردم و خروجی رو به من  ??? ???????? میده

مهدی ۲۶ اردیبهشت ۱۴۰۱، ۰۱:۰۸

دقیقا مثل همینجا، در هنگام insert هم باید قبلش UTF-8 ست شده باشه

برای نمونه یکبار با UTF-8 یک متن فارسی insert کنید و همون ردیف رو از پایگاه داده دریافت و بررسی کنید

محمد گازری ۲۶ اردیبهشت ۱۴۰۱، ۰۱:۱۵

این کار رو کردم متاسفانه نشد..!

مهدی ۲۶ اردیبهشت ۱۴۰۱، ۰۱:۳۶

در هنگام ایجاد پایگاه داده بهش مقدار UTF-8 رو داده بودین؟

محمد گازری ۲۶ اردیبهشت ۱۴۰۱، ۰۱:۴۴

خیر نداده بودم و چیزی در این مورد در این دوره آموزش داده نشده

میشه بگین دقیقا چیکار باید کنم؟

مهدی ۲۶ اردیبهشت ۱۴۰۱، ۰۲:۰۷

نگران نباشید

جلوتر این مباحث کامل پوشش داده شده

در هنگام ایجاد پایگاه داده در phpmyadmin مقدار collation رو برابر utf8mb4_general_ci قرار بدین

محمد گازری ۲۶ اردیبهشت ۱۴۰۱، ۰۲:۱۳

توی cmd و یا php زمانی که دیتابیس میسازیم نمیشه کاری کرد؟!

مهدی ۲۶ اردیبهشت ۱۴۰۱، ۰۲:۱۶

در cmd وارد mysql بشید و دستور زیر رو بزنید

CREATE DATABASE mehdidb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
بهترین پاسخ
محمد گازری ۲۶ اردیبهشت ۱۴۰۱، ۰۲:۲۱

کدی که شما دادین ارور داد و دیتابیس ساخته نشد، ولی کد زیر جواب داد:

create database <database_name> character set UTF8mb4 collate utf8mb4_bin;

مرسی بابت پاسخگویی یه دنیا ممنون ❤️

مهدی ۲۶ اردیبهشت ۱۴۰۱، ۰۲:۴۵

خواهش میکنم ??

علت خطا هم احتمالا بخاطر تفاوت نسخه پایگاه داده است

محمد گازری ۲۶ اردیبهشت ۱۴۰۱، ۰۲:۴۷