[mysql]PHP 将空的窗体值发送到服务器

标签: MySQL PHP HTML
发布时间: 2017/4/9 22:47:51
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

此服务器承认 PHP 连接,但在表单中输入的值不能存储只是空表行。

PHP 代码︰

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Aliens Abducted Me - Report an Abduction</title>
</head>
<body>
  <h2>Aliens Abducted Me - Report an Abduction</h2>

<?php


  $name = $_POST'firstname';
  $last_name =$_POST'lastname';
  $when_it_happened = $_POST'whenithappened';
  $how_long = $_POST'howlong';
  $how_many = $_POST'howmany';
  $alien_description = $_POST'aliendescription';
  $what_they_did = $_POST'whattheydid';
  $fang_spotted = $_POST'fangspotted';
  $email = $_POST'email';
  $other = $_POST'other';

  $dbc = mysqli_connect('localhost', 'root', 'Password', 'aliendatabase')
    or die('Error Connecting to MySQL server');

  $query = "INSERT INTO aliens_abduction (first_name, last_name, when_it_happened, how_long, " .
    "how_many, alien_description, what_they_did, fang_spotted, other, email) " .
    "VALUES ('$first_name, '$last_name', '$when_it_happened', '$how_long', '$how_many', " .
    "'$alien_description', '$what_they_did', '$fang_spotted', '$other', '$email')";

  $result = mysqli_query($dbc, $query)
    or die('Error Querying Database');

  mysqli_close($dbc); 

  echo 'Thanks for submitting the form.<br />';
  echo 'You were abducted ' . $when_it_happened;
  echo ' and were gone for ' . $how_long . '<br />';
  echo 'Number of aliens: ' . $how_many . '<br />';
  echo 'Describe them: ' . $alien_description . '<br />';
  echo 'The aliens did this: ' . $what_they_did . '<br />';
  echo 'Was Fang there? ' . $fang_spotted . '<br />';
  echo 'Other comments: ' . $other . '<br />';
  echo 'Your email address is ' . $email;

?>

</body>
</html>

这里是窗体/HTML 代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Aliens Abducted Me - Report an Abduction</title>
  <link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
  <h2>Aliens Abducted Me - Report an Abduction</h2>

  <p>Share your story of alien abduction:</p>
  <form method="post" action="report.php">
    <label for="firstname">First name:</label>
    <input type="text" id="firstname" name="firstname" /><br />
    <label for="lastname">Last name:</label>
    <input type="text" id="lastname" name="lastname" /><br />
    <label for="email">What is your email address?</label>
    <input type="text" id="email" name="email" /><br />
    <label for="whenithappened">When did it happen?</label>
    <input type="text" id="whenithappened" name="whenithappened" /><br />
    <label for="howlong">How long were you gone?</label>
    <input type="text" id="howlong" name="howlong" /><br />
    <label for="howmany">How many did you see?</label>
    <input type="text" id="howmany" name="howmany" /><br />
    <label for="aliendescription">Describe them:</label>
    <input type="text" id="aliendescription" name="aliendescription" size="32" /><br />
    <label for="whattheydid">What did they do to you?</label>
    <input type="text" id="whattheydid" name="whattheydid" size="32" /><br />
    <label for="fangspotted">Have you seen my dog Fang?</label>
    Yes <input id="fangspotted" name="fangspotted" type="radio" value="yes" />
    No <input id="fangspotted" name="fangspotted" type="radio" value="no" /><br />
    <img src="fang.jpg" width="100" height="175"
      alt="My abducted dog Fang." /><br />
    <label for="other">Anything else you want to add?</label>
    <textarea id="other" name="other"></textarea><br />
    <input type="submit" value="Report Abduction" name="submit" />
  </form>
</body>
</html>

代码是直接从一本书。php v5.6.22 和最新的 Apache 和 MySQL。 谁能告诉我什么也许错了或我做错了

解决方法 1:

看到这 => $_POST'firstname'; 和所有其他邮政阵列吗?

它们缺少括号 [] 为他们。

所以改变到 $_POST['firstname']; ,也为所有其他人做的一样。

错误报告有助于你在这里,会阅读手册 》 在形式上。

另外,您应该使用条件 !empty() 反对您会在您的数据库中的所有职位阵列。

这可能引发错误如果任何一项都空的您的数据库不应接受 NULL 值。

你也有缺少引号为 ('$first_name, ,并将在您的查询。

这需要这样重写︰

$query = "INSERT INTO aliens_abduction (first_name, last_name, when_it_happened, how_long, 
    how_many, alien_description, what_they_did, fang_spotted, other, email) 
    VALUES ('$first_name', '$last_name', '$when_it_happened', '$how_long', '$how_many', 
    '$alien_description', '$what_they_did', '$fang_spotted', '$other', '$email')";

脚注︰

本代码是开放给SQL 注入。使用预准备语句,或PDO 预准备语句

官方微信
官方QQ群
31647020