提交表格后没有任何反应

时间:2011-06-26 00:17:42

标签: php mysql

所以我正在构建一个简单的问题表单,允许用户提交问题,一旦问题被提交,它就会被发送到数据库。我无法弄清楚它为什么不起作用。这是我的代码,第一个是ask.html,第二个是ask.php。

<form action="ask.php" method="POST">
            Name: (not your real name)<br/>
            <input type="text" name="name" id="name"/>
            <br/>
            <br/>
            Question: <br/>
            <textarea name="question" cols="60" rows="10" id="question">
            </textarea>
            <br/>
            <input type="submit" />
        </form>

<?php

include('config.php');
include('open_connection.php');



if ((!$_POST[name]) || (!$_POST[question]))
    {
        header ("Location: ask.html");
        exit;
    }


    //Select database and table
    $db_name = "questionme";
    $table_name = "questions";

    //Insert data into database
    $sql = "INSERT INTO $table_name
    (name, question) VALUES
    ('$_POST[name]', '$_POST[question]')";

    $result = @mysql_query($sql, $connection) or die(mysql_error());

?>

<html>
<head>
<title>Ask</title>
<head>
<body>

<h1>Question Submitted</h1>

<p><strong>Name:</strong>
<?php echo "$_POST[name]"; ?></p>

<p><strong>Question:</strong>
<?php echo "$_POST[question]"; ?></p>

</body>
</html>

4 个答案:

答案 0 :(得分:1)

使用isset()检查你的帖子变量,并使用你正在检查的哈希的引号:

if (!isset($_POST['name']) || !isset($_POST['question']))

此外,永远不要直接插入$ _POST变量的值 - 改为做这样的事情:

$name = mysql_real_escape_string($_POST['name']);
$question = mysql_real_escape_string($_POST['question']);

答案 1 :(得分:1)

以下肯定会产生警告:

if ((!$_POST[name]) || (!$_POST[question]))

替换为

if (!isset($_POST[name]) || !isset($_POST[question]))

然后绝对考虑其他人的回答。在您的INSERT:

('$_POST[name]', '$_POST[question]')";

会更好(因为它们也会触发警告):

('{$_POST['name']}', '{$_POST['question']}')";

关于这些

<?php echo "$_POST[name]"; ?></p>
...
<?php echo "$_POST[question]"; ?></p>

将它们作为

<?php echo $_POST['name']; ?></p>
...
<?php echo $_POST['question']; ?></p>

答案 2 :(得分:0)

你启用了show_errors PHP配置吗? 尝试放置一些像 echo“[1]”; echo“[2]”; 等,以发现您的脚本终止的位置(调试一下); 永远不要直接在SQL查询中使用_POST和_GET变量(使用mysql_real_escape_string来逃避它们的值)...或者你的脚本容易受到SQL注入攻击!!!

答案 3 :(得分:0)

如果您在字符串中使用$ _POST ['name']等表格,则必须使用{}

包装它们
      $sql = "INSERT INTO $table_name
        (name, question) VALUES
        ('{$_POST[name]}', '{$_POST[question]}')";
<?php echo "{$_POST[name]}"; ?>