アプリ版:「スタンプのみでお礼する」機能のリリースについて

題目の通りです!以下のプログラムの5行目です。情報不足でしたら追加します。
 よろしくお願いいたします。
<?php
define('DB_DATABASE', 'oneline_bbs');
define('DB_USERNAME', 'dbuser');
define('DB_PASSWORD', 'dbuser');
define('PDO_DSN', 'mysql:dbhost=localhost;dbname=' . DB_DATABASE);

try {
$db = new PDO(PDO_DSN, DB_USERNAME, DB_PASSWORD);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo $e->getMessage();
exit;
}

$errors = array();

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$name = null;
if (!isset($_POST['name']) || !strlen($_POST['name'])) {
$errors['name'] = '名前を入力してください';
} elseif (strlen(_POST['name']) > 40) {
$errors['name'] = '名前は40文字以内で入力してください';
} else {
$name = $_POST['name'];
}

$comment = null;
if (!isset($_POST['comment']) || !strlen($_POST['comment'])) {
$errors['comment'] = 'ひとことを入力してください';
} elseif (strlen($_POST['comment']) > 200) {
$errors['comment'] = 'ひとことは200文字以内で入力してください';
} else {
$comment = $_POST['comment'];
}

if (count($errors) === 0) {
date_default_timezone_set('Asia/Tokyo');

$sql = $db->prepare("insert into post (name, comment, created_at) values (?, ?, ?)");
$sql->execute([$name, $comment, date('Y-m-d H:i:s')]);

$db->exec($sql);

header('Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
}
}
?>

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ひとこと掲示板</title>
</head>
<body>
<h1>ひとこと掲示板</h1>
<?php if (count($errors)): ?>
<ul>
<?php foreach ($errors as $error): ?>
<li><?php echo htmlspecialchars($error, ENT_QUOTES, 'UTF-8'); ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
<form action="index.php" method="post">
名前: <input type="text" name="name">
ひとこと: <input type="text" name="comment">
<input type="submit" name="submit" value="送信">
</form>
<?php
$sql = "select * from post order by created_at desc";
$results = $db->query($sql);
?>
<?php if ($results !== false && $results->rowCount()): ?>
<ul>
<?php while ($post = $results->fetch()): ?>
<li>
<?php echo htmlspecialchars($post['name'], ENT_QUOTES, 'UTF-8'); ?>:
<?php echo htmlspecialchars($post['comment'], ENT_QUOTES, 'UTF-8'); ?> -
<?php echo htmlspecialchars($post['created_at'], ENT_QUOTES, 'UTF-8'); ?>
</li>
<?php endwhile; ?>
</ul>
<?php endif; ?>

<?php $db = null; ?>

</body>
</html>

質問者からの補足コメント

  • うーん・・・

    解決に当たり以下の意味を知れべています。
    define('PDO_DSN',
    分かり次第報告します。
     本日中の解決は無理かもしれません
    悪しからず。

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/02/19 20:31
  • うーん・・・

    define('PDO_DSN', 'mysql:dbhost=localhost;dbname=' . DB_DATABASE);
    ですが、
    $db = new PDO(PDO_DSN, DB_USERNAME, DB_PASSWORD);
    に関連もあるみたいですので、新たに出てきたPDOなので
    一筋縄ではいかないみたいです。
     いったん解決とさせていただきます。

      補足日時:2017/02/20 21:58

A 回答 (1件)

ローカルホストにあるoneline_bbsという名前のmySQLによるデータベースでないのかな?

この回答への補足あり
    • good
    • 1
この回答へのお礼

ご回答くださいましてありがとうございました。
どうもすみません!
 ご回答が遅れまして
本日中に調べます。
 お待ちください。

お礼日時:2017/02/19 17:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!