Textarea在mySQL数据库字段PHP中是空的

时间:2015-09-09 04:31:18

标签: php html mysql

我创建了一个HTML表单,并尝试将数据从其字段保存到数据库。输入,下拉菜单和单选按钮正确存储,但textarea始终作为空字段添加到数据库中。这是代码:

HTML:

    <head>
    <link rel="stylesheet" type="text/css" href="feedback_form_style.css">
</head>
<form name="feedbackform" method="post" class="basic-grey" action="feedback_form_send.php">
<h1>Feedback form
    <span>Please answer the questions below.</span>
</h1>
<table width="450px">
</tr>
<tr>
    <td valign="top">
        <label for="School">School</label>
    </td>
    <td valign="top">
        <input type="text" name="School" placeholder="Name of your school" maxlength="50" size="30" required/> <! required not supported in Safari>
    </td>
</tr>

<tr>
    <td valign="top">
        <label for="Year">Year</label>
    </td>
    <td valign="top">
        <input type="text" name="Year" placeholder="Which year you are" maxlength="50" size="30"/>
    </td>
</tr>

<tr>
    <td valign="top">
        <label for="Gender">Gender</label>
    </td>
    <td valign="top">
        <select name="Gender">
            <option value="male"/>Male</option>
            <option value="female"/>Female</option>
        </select>
    </td>
</tr>
</table>

<p></p> <!emptyline>

<table>
<tr>
    <td valign="top">
        <label for="What do you think and engineer does">What do you think an engineer does? </label>
    </td>
</tr>
<tr>
    <td valign="top">
        <textarea name="What do you think an engineer does" placeholder="Your answer here" maxlength="1000" cols="60" rows="10"/></textarea>
    </td>
</tr>

<tr> <td><p></p></td></tr> <!emptyline>

<tr>
    <td valign="top">
        <label for="What was the most enjoyable part about the visit today?">What was the most enjoyable part about the visit today? </label>
    </td>
</tr>
<tr>
    <td valign="top">
        <textarea name="What was the most enjoyable part about the visit today" placeholder="Your answer here" maxlength="1000" cols="60" rows="10"></textarea>
    </td>
</tr>

<tr> <td><p></p></td></tr> <!emptyline>

<tr>
    <td valign="top">
        <label for="Was there anything you did not like?">Was there anything you did not like? </label>
    </td>
</tr>
<tr>
    <td valign="top">
    <input type="radio" name="Was there anything you did not like?" value="yes">Yes (plese give details below)
    &nbsp;
    <input type="radio" name="Was there anything you did not like?" value="no">No
    </td>
</tr>
<tr>
    <td valign="top">
        <textarea name="Was there anything you did not like (comment)?" placeholder="Details here" maxlength="1000" cols="60" rows="10"></textarea>
    </td>
</tr>

<tr> <td><p></p></td></tr> <!emptyline>

<tr>
    <td valign="top">
        <label for="Would you consider studying Engineering at university?">Would you consider studying Engineering at university? </label>
    </td>
</tr>
<tr>
    <td valign="top">
    <input type="radio" name="Would you consider studying Engineering at university?" value="yes">Yes
    &nbsp;
    <input type="radio" name="Would you consider studying Engineering at university?" value="no">No
    &nbsp;
    <input type="radio" name="Would you consider studying Engineering at university?" value="unsure">Unsure
    </td>
</tr>

<tr> <td><p></p></td></tr> <!emptyline>

<tr>
    <td valign="top">
        <label for="Has today's session inspired you to consider becoming an engineer?">Has today's session inspired you to consider becoming an engineer? </label>
    </td>
</tr>
<tr>
    <td valign="top">
    <input type="radio" name="Has today's session inspired you to consider becoming an engineer?" value="yes">Yes
    &nbsp;
    <input type="radio" name="Has today's session inspired you to consider becoming an engineer?" value="no">No
    &nbsp;
    <input type="radio" name="Has today's session inspired you to consider becoming an engineer?" value="unsure">Unsure
    </td>
</tr>

<tr> <td><p></p></td></tr> <!emptyline>

<tr>
    <td valign="top">
        <label for="Before today's session did you know much about engineering?">Before today's session did you know much about engineering? </label>
    </td>
</tr>
<tr>
    <td valign="top">
    <input type="radio" name="Before today's session did you know much about engineering?" value="yes">Yes
    &nbsp;
    <input type="radio" name="Before today's session did you know much about engineering?" value="no">No
    &nbsp;
    <input type="radio" name="Before today's session did you know much about engineering?" value="unsure">A little
    </td>
</tr>

<tr> <td><p></p></td></tr> <!emptyline>

<tr>
    <td valign="top">
        <label for="Has todays session taught you much about engineering?">Has todays session taught you much about engineering? </label>
    </td>
</tr>
<tr>
    <td valign="top">
    <input type="radio" name="Has todays session taught you much about engineering?" value="yes">Yes
    &nbsp;
    <input type="radio" name="Has todays session taught you much about engineering?" value="no">No
    &nbsp;
    <input type="radio" name="Has todays session taught you much about engineering?" value="unsure">A little
    </td>
</tr>

<tr> <td><p></p></td></tr> <!emptyline>

<tr>
    <td valign="top">
        <label for="Based on today's session, what do you think an engineer does?">Based on today's session, what do you think an engineer does? </label>
    </td>
</tr>
<tr>
    <td valign="top">
        <textarea name="Based on today's session, what do you think an engineer does?" placeholder="Your answer here" maxlength="1000" cols="60" rows="10"></textarea>
    </td>
</tr>

<tr> <td><p></p></td></tr> <!emptyline>

<tr>
    <td valign="top">
        <label for="Comments/Suggestions/Questions">Comments/Suggestions/Questions </label>
    </td>
</tr>
<tr>
    <td valign="top">
        <textarea name="Comments/Suggestions/Questions" placeholder="Enter your comments, suggestions and questions here" maxlength="1000" cols="60" rows="10"></textarea>
    </td>
</tr>

<tr> <td><p></p></td></tr> <!emptyline>

<tr>
    <td colspan="2" style="text-align:center">
        <input type="submit" class="submit" value="Submit">
    </td>
</tr>

<tr>
    <td colspan="2" style="text-align:center">
        Thank you for your feedback
    </td>
</tr>
<tr>
    <td colspan="2" style="text-align:center">
        © Girls in Engineering 2015
    </td>
</tr>

</table>

</form>

PHP:

$value = test_input($_POST['School']);
$value2 = test_input($_POST['What do you think an engineer does']);
$sql = "INSERT INTO form1 (input1,input2) VALUES ('$value', '$value2')";

if($_POST){
echo '<pre>';
print_r($_POST);
echo '</pre>';
}

print_r的输出($ _ POST):

Array
(
    [School] => 123
    [Year] => 
    [Gender] => male
    [What_do_you_think_an_engineer_does] => 234
    [What_was_the_most_enjoyable_part_about_the_visit_today] => 
    [Was_there_anything_you_did_not_like_(comment)?] => 
    [Based_on_today's_session,_what_do_you_think_an_engineer_does?] => 
    [Comments/Suggestions/Questions] => 
)

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

在textarea中使用name="Comments"。因为那是$_POST['Comments']所链接的。

假设您的代码有

<textarea name="What was the most enjoyable part about the visit today" placeholder="Your answer here" maxlength="1000" cols="60" rows="10"></textarea>

您的帖子应为$_POST['What was the most enjoyable part about the visit today']

如果要将注释作为数组传递

<textarea name="Comments[]" placeholder="Your answer here" maxlength="1000" cols="60" rows="10"></textarea>

提示:使用以下代码在feedback_form_send.php页面上进行调试,以检查通过提交后发送给它的值;

if($_POST){
echo '<pre>';
print_r($_POST);
echo '</pre>';
}

EDITED

建议:您的代码容易受到Sql注入攻击。使用PDO或mysqli而不是mysql

EDITED

我的打印件显示值

Array
(
    [School] => myschool
    [Year] => 2018
    [Gender] => male
    [What_do_you_think_an_engineer_does] => engineer sleeps
    [What_was_the_most_enjoyable_part_about_the_visit_today] => it was nice
    [Was_there_anything_you_did_not_like?] => yes
    [Was_there_anything_you_did_not_like_(comment)?] => too beutiful
    [Would_you_consider_studying_Engineering_at_university?] => yes
    [Has_today's_session_inspired_you_to_consider_becoming_an_engineer?] => no
    [Before_today's_session_did_you_know_much_about_engineering?] => unsure
    [Has_todays_session_taught_you_much_about_engineering?] => yes
    [Based_on_today's_session,_what_do_you_think_an_engineer_does?] => engineers do hard work
    [Comments/Suggestions/Questions] => no comments, i suggest to do things
)

所以你的php变量应该被分配这样的东西。 这只是一个让它易于理解的演示。在使用

之前,请务必记住清理输入
    $school=$_POST['School'];
    $year=$_POST['Year'];
    $gender=$_POST['Gender'];
    $whatengineerdoes=$_POST['What_do_you_think_an_engineer_does'];
    $enjoyable_part=$_POST['What_was_the_most_enjoyable_part_about_the_visit_today'];
    $youdontlike=$_POST['Was_there_anything_you_did_not_like?'];
    $didnotlike=$_POST['Was_there_anything_you_did_not_like_(comment)?'];
    $wouldyou=$_POST['Would_you_consider_studying_Engineering_at_university?'];
    $session_inspired=$_POST["Has_today's_session_inspired_you_to_consider_becoming_an_engineer?"];
    $before_session=$_POST["Before_today's_session_did_you_know_much_about_engineering?"];
    $has_taught=$_POST['Has_todays_session_taught_you_much_about_engineering?'];
    $based_on=$_POST["Based_on_today's_session,_what_do_you_think_an_engineer_does?"];
    $comments=$_POST['Comments/Suggestions/Questions'];

EDITED

以下是如何将上述数据插入表中的示例

$dbhost = "localhost";
$dbname = "mydatabase";
$dbusername = "root";
$dbpassword = "mypppasss";
$link = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbusername,$dbpassword);
$statement = $link->prepare("INSERT INTO form1(input1,input2,input3,input4,input5,input6,input7,input8,input9,input10,input11,input12,input13)
    VALUES(:inp1,:inp2,:inp3,:inp4,:inp5,:inp6,:inp7,:inp8,:inp9,:inp10,:inp11,:inp12,:inp13)");
$statement->execute(array(
    inp1=>$school,
    inp2=>$year,
    inp3=>$gender,
    inp4=>$whatengineerdoes,
    inp5=>$enjoyable_part,
    inp6=>$youdontlike,
    inp7=>$didnotlike,
    inp8=>$wouldyou,
    inp9=>$session_inspired,
    inp10=>$before_session,
    inp11=>$has_taught,
    inp12=>$based_on,
    inp13=>$comments
));