【问题标题】:Uncaught Error: Undefined class constant 'ERRMODE_EXPECTION'未捕获的错误:未定义的类常量“ERRMODE_EXPECTION”
【发布时间】:2019-10-20 15:43:03
【问题描述】:

我正在尝试建立一个注册系统并将用户名和密码存储在数据库中

我使用 PHP 编写代码,但使用 PDO 时出现错误,我找不到解决方案 错误:

未捕获的错误:/storage/ssd4/295/11285295/public_html/config.php:8 中未定义的类常量 'ERRMODE_EXPECTION' 堆栈跟踪:#0 /storage/ssd4/295/11285295/public_html/index.php(2 ): require_once() #1 {main} 在第 8 行的 /storage/ssd4/295/11285295/public_html/config.php 中抛出

我的代码:

<?php
$db_user = "id11285295_useraccounts";
$db_password = "(my password here)";
$db_name = "id11285295_useraccounts";


$db = new PDO('mysql:host=localhost;db_name=' . $db_name . ';charset=utf8',  $db_user, $db_password);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXPECTION);

另外,我还有另一个注册页面需要这个才能工作

【问题讨论】:

  • "使用 php 将用户名和密码存储到 phpmyadmin" 顺便说一下,phpmyadmin 不是 RDMS...
  • 尝试使用下划线,即:utf8_unicode_ci
  • “尝试使用下划线,即:utf8_unicode_ci” 不会有帮助 @RamRaider 它应该是 charset=utf8 而不是 ... utf8_unicode_ci 是排序规则而不是字符集。 .
  • 是的:我的错,你完全正确
  • 问题已更改

标签: php mysql pdo


【解决方案1】:

第一个错误行表明问题出在指定的字符集上。 utf8-unicode-ci 是字符集utf8 下的排序规则,而不是字符集。

有关字符集的信息,请参阅documentation

【讨论】:

  • 告诉 topicstarter 应该改用 charset=utf8 是否还有很长的路要走??
  • 更像是对字符集和排序规则的友好介绍;)。推荐的字符集是utf8mb4
  • 使用utf8mb4,因为utf-8 也不是有效的字符集(utf8 是,但它是utf8mb4 的子集)。请参阅文档链接。
  • “更像是对字符集和排序规则的友好介绍 ;)。” 很公平 :-) “推荐的字符集是 utf8mb4” 取决于在 MySQL 版本上..
  • utf8mb4 包含在 MySQL 5.5.3 中(大约 10 年前)。如果一个仍在运行 MySQL pre 5.5.3,建议升级..
猜你喜欢
  • 2023-01-04
  • 2021-05-13
  • 2021-08-11
  • 2020-12-21
  • 1970-01-01
  • 2022-07-04
  • 2015-01-28
  • 2021-11-13
  • 2021-11-16
相关资源
最近更新 更多