无法向我的表添加新元素

时间:2017-03-15 18:48:14

标签: php html mysql

我正在创建一个简单的聊天页面,用户可以在其中写下自己的姓名和信息,然后点击提交按钮,将其重定向到相同的表单页面,现在他可以在表单下方看到他的消息,请注意消息按最新排序。

我的问题是,当我在我的页面中写一个名字和一条消息并点击发送时,没有任何内容被添加到我的表中。但是,当我手动(从phpmyadmin)执行此操作时,将显示该消息。

我认为我的sql查询有问题,但我无法找到它,我知道请求帮助告诉我错误以及如何纠正它。

我的代码分为两个文件:chat.php和chat_post.php。

chat.php:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Mini chat</title>
    <style>
        body{
            background-color: grey;
        }
        div#f, p{
            text-align: center;
            font-weight: bold;
        }
        input#mbox{
            height: 300px;
            width: 200px;
        }
    </style>
</head>
<body>
        <p>Bienvenue à la page de chat</p>

        <div id="f">
        <form method="POST" action="chat_post.php">
            pseudo : <br>
            <input type="text" name="pseudo" ><br><br>
            message : <br>
            <input type="text" name="message" id="mbox" ><br><br>
            <input type="submit" value="envoyer">
        </form>
        </div>

        <?php 
            try{
            $db = new PDO('mysql:host=localhost;dbname=learn','root','');
            }
            catch(Exception $e){
                die('Erreur : '.$e->getMessage());
            }

            $a=$db->query('SELECT pseudo,message FROM chat ORDER BY id DESC LIMIT 0,10');
            while ($b=$a->fetch()) {
                echo '<p>'.htmlspecialchars($b['pseudo']).' : '.htmlspecialchars($b['message']).'</p>';
            }
            $a->closeCursor();  
        ?>
</body>
</html>

chat_post.php:

<?php 

try{
    $db = new PDO('mysql:host=localhost;dbname=learn','root','');
}
catch(Exception $e){
    die('Erreur : '.$e->getMessage());
}
if (isset($_POST['pseudo']) && isset($_POST['message'])) {
    $a = $db->prepare('INSERT INTO chat(id,pseudo,message) VALUES(pseudo,message)');
    $a ->execute(array('pseudo' =>$_POST['pseudo'],'message' => $_POST['message']));
    header('Location : chat.php');
    echo "message added";
}




 ?>

提前致谢

1 个答案:

答案 0 :(得分:2)

正如我所说:

INSERT INTO chat(id,pseudo,message) VALUES(pseudo,message)

缺少值和缺少的冒号中的参数。

INSERT INTO chat(id,pseudo,message) VALUES('', :pseudo, :message)

或者,如Xorifelse所述

INSERT INTO chat(pseudo,message) VALUES(:pseudo, :message)

两者都有效。

需要删除Location和冒号之间的额外空格。

header('Location : chat.php');
                ^ right there

header('Location: chat.php');
exit;

参考:http://php.net/manual/en/function.header.php

也删除回声并为其添加一个退出以防止进一步执行。

检查错误的参考链接:

PDO准备好的陈述的参考: