0

MySQLデータベースで文字エンコードをテストできるように、このページから以下のアプリケーションを入手しました。同じページにリストされているクエリを使用してデータベースを作成しました。

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

そして、私のデータベースに接続するための詳細を入力しました。これは正しいと確信しています。ただし、何らかの理由でデータベースに何も送信されないため、データベースにエントリを手動で追加すると、「出力テスト」の下に次のエラーが発生します。

注意:未定義のインデックス:56行目の/home/..../php/encoding_test.phpのテキスト

問題が何であるかを見つけることができる人がいるのだろうか?

<?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>
4

1 に答える 1

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

PHPコードによると、テーブルには。textsという名前の列が含まれているため、テーブルを操作しtextますが、スキーマではこの列に名前が付いているため、上記のクエリを使用してcontent 列の名前をに変更する必要があります。contenttext

于 2012-08-14T16:04:13.107 に答える