mysql - 在 MySQL 数据库中测试编码的应用程序未提交到表

标签 mysql utf-8 character-encoding

我从 this page 收到了下面的申请这样我就可以在 MySQL 数据库上测试字符编码。我已经使用同一页面上列出的查询创建了数据库,即:

CREATE TABLE `texts` (
  `id` INT(11) unsigned NOT NULL AUTO_INCREMENT,
  `content` TEXT,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

并输入了连接到我的数据库的详细信息,我确信这些信息是正确的。但是,由于某种原因,没有任何内容提交到我的数据库,当我手动向数据库添加条目时,我在“输出测试”下方收到以下错误:

Notice: Undefined index: text in /home/..../php/encoding_test.php on line 56

我想知道是否有人能发现问题所在?

<?php

error_reporting(E_ALL);
ini_set('display_errors', true);

header('Content-Type: text/html; charset=utf-8');

$pdo = new PDO('mysql:dbname=encoding_test;host=localhost', 'user', 'pass',
               array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));

if (!empty($_POST['text'])) {
    $stmt = $pdo->prepare('INSERT INTO `texts` (`text`) VALUES (:text)');
    $stmt->execute(array('text' => $_POST['text']));
}

$results = $pdo->query('SELECT * FROM `texts`')->fetchAll(PDO::FETCH_ASSOC);

?>
<!DOCTYPE html>

<html>
<head>
    <title>UTF-8 encoding test</title>
</head>
<body>

<h1>Display test</h1>

<p>
A good day, World!<br>
Schönen Tag, Welt!<br>
Une bonne journée, tout le monde!<br>
يوم جيد، العالم<br>
좋은 일, 세계!<br>
Một ngày tốt lành, thế giới!<br>
こんにちは、世界!<br>
</p>

<h1>Submission test</h1>

<form action="" method="post" accept-charset="utf-8">
    <textarea name="text"></textarea>
    <input type="submit" value="Submit">
</form>

<?php if (!empty($_POST['text'])) : ?>
    <h2>Last received data</h2>
    <pre><?php echo htmlspecialchars($_POST['text'], ENT_NOQUOTES, 'UTF-8'); ?></pre>
<?php endif; ?>

<h1>Output test</h1>

<ul>
    <?php foreach ($results as $result) : ?>
        <li>
            <pre><?php echo htmlspecialchars($result['text'], ENT_NOQUOTES, 'UTF-8'); ?></pre>
        </li>
    <?php endforeach; ?>
</ul>

</body>
</html>

最佳答案

ALTER TABLE `texts` CHANGE `content` `text` TEXT;

根据您的 PHP 代码,您使用表 texts,因为它包含名为 text 的列,但在您的架构中,该列的名称为 content > 因此,您需要使用上述查询将列 content 重命名为 text

关于mysql - 在 MySQL 数据库中测试编码的应用程序未提交到表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11955993/

相关文章:

php - Laravel 尝试查询多个表

string - 如何使用 Unicode::Normalize 创建最兼容的 windows-1252 编码字符串?

delphi - xe2 中的备忘录无法正确显示存储在 ansi 字符集中的元音变音字符

java - FTP 文件上传 - 文件名编码错误

php - UTF8 空字符和规范化空白字符

javascript - 如何从表单获取数据并将输入添加到Mysql表。使用JQuery

mysql - Centos 7安装mysql的问题

php - 不使用 echo 查询数据库,生成设计结果

c++ - 将 C++ std::string 转换为 UTF-16-LE 编码的字符串

bash - 如何在 Bash 脚本中为 conky 创建特殊字符?