php - 阿拉伯字符的 PDO 数据库

标签 php database pdo phpmyadmin arabic

我想使用 pdo 和 php 将阿拉伯字符插入数据库,但我在数据库中得到了这些字符

الجامع &#1575

当我使用

<META http-equiv="Content-Type" content="text/html; charset=UTF-8">

结果是

   ??????????

我在 phpMyadmin 中收集列

utf8mb4_unicode_ci

还有这个

utf_unicode_ci

但我仍然有同样的错误。

我尝试这样建立连接:(totti,totti 不是我真正的用户名和密码)

parent::__construct('mysql:host=localhost;dbname=ams-competation;charset=utf8"', 'totti', 'totti');

但还是报错

我也这样试过:

parent::__construct('mysql:host=localhost;dbname=ams-competation;charset=utf8', 'totti', 'totti'
                ,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));

并且不起作用:(

在提交表单之后,在插入数据库之前,我回显了这些值,我得到了阿拉伯字符,这意味着我的问题出在数据库中,但是回显可以在不使用元数据的情况下工作

当我尝试从 phpmyadmin 插入阿拉伯字符时,它成功了

我正在使用

phpmyadmin in XAMPP 1.7.4
php 5.5.3

我终于找到了解决方案,它是:

  1. 制作列的集合 utf8_unicode_ci
  2. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">在标题中

最佳答案

尝试连接到数据库时将连接设置为 utf-8。

  • 如果您遵守规则和最佳做法:

首先在你的配置文件中设置常量,如下所示:

define('DB_SERVER', 'your_hostname');
define('DB_USERNAME', 'your_username');
define('DB_PASSWORD', 'your_password');
define('DB_CHARSET', 'UTF-8');
define('DB_DATABASE', 'your_dbname');
define('PDO_DSN', 'mysql:host=' . DB_SERVER . ';dbname=' . DB_DATABASE . ';charset=' . DB_CHARSET);

然后像这样设置你的连接:

$_dbhandler = new PDO(PDO_DSN, DB_USERNAME, DB_PASSWORD,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES UTF8"));
  • 快速而肮脏

像这样设置你的连接:

$dbhandler = new PDO('mysql:host=your_hostname;dbname=your_dbname;charset=UTF-8', $user, $pass);

关于php - 阿拉伯字符的 PDO 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10665145/

相关文章:

php - 禁用特定运输方式的支付网关

php - Symfony,getters 和 setters 与魔术方法

linux - PostgreSQL : download schema at the same time while showing using\d+ <table_name> command?

php - PDO 返回所有行

php - 如果记录存在于 php/PDO 中则删除记录

php - Ratchet wsserver 的enableKeepAlive 没有关闭连接?

php - PHP 关联数组中的项目不能以数字方式访问(即通过索引)吗?

sql - 合并数据库结构从一台服务器更改到另一台服务器

Mysql外键约束格式不正确?

php - PHP Sqlite和PDO插入