sql将两个表单连接到数据库

时间:2017-11-02 13:49:03

标签: php mysql forms

关于这个话题,我是初学者。我已经按照这个tutorial将一个表单连接到一个数据库,它运行良好。现在我想添加另一个表单,我的问题是:

  • 我在connection.php中创建单独的函数吗?
  • 在同一个数据库中创建一个单独的表吗?
  • 如何生成单独的感谢信息?

另一种表格是联系表格。

connection.php:

<?php

function Connect()
{
 $dbhost = "localhost";
 $dbuser = "root";
 $dbpass = "root";
 $dbname = "responses";

 // Create connection
 $conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname) or die($conn->connect_error);

 return $conn;
}

?>

thankyou.php

<?php

require 'connection.php';
$conn    = Connect();
$email   = $conn->real_escape_string($_POST['u_email']);
$query   = "INSERT into newsletter (email) VALUES('" . $email . "')";
$success = $conn->query($query);

if (!$success) {
    die("Couldn't enter data: ".$conn->error);

}
echo $_GET["form"];

echo "Thank you for subscribing to our newsletter. <br>";

$conn->close();


?>

第二种形式如下:

$name    = $conn->real_escape_string($_POST['name']);
$email   = $conn->real_escape_string($_POST['email']);
$message = $conn->real_escape_string($_POST['message']);
$query   = "INSERT into contactForm (name,email,message) VALUES('" . $name . "','" . $email . "','" . $message . "')";
$success = $conn->query($query);

我创建了两个表:newsletter和contactForm。现在,如何将表单输入指向右表?

2 个答案:

答案 0 :(得分:0)

1 - 你可以&#34;要求&#34; /&#34;包括&#34;相同的connection.php适合你/需要它

2 - 您可以在同一个数据库中创建一个新表,并在查询示例上对此新表执行操作:

$query   = "INSERT into newsletter (email) VALUES('" . $email . "')";
$success = $conn->query($query);

$query   = "INSERT into newsletter_schedule (email,schedule_date) VALUES('" . $email . "', NOW())";
$success = $conn->query($query);

或者您可以在不同的数据库中创建并更改连接的数据库名称(更复杂但有时需要) 3 - 您可以在单独的静态文件中执行并重定向到使用(PHP函数)

header("location: tankyou.html");//put your file name/must be the first output, even a space before can throw a error

如果不是您要找的那个,请留下关于第3个的更多细节

答案 1 :(得分:0)

不幸的是,你的问题是“我怎么......?”在这种情况下有点宽泛。有很多方法。了解这些事情的唯一真正方法是尝试多次。你可能会失败,但这是学习最多的地方。

您的具体问题:

  

我在connection.php中创建单独的函数吗?

取决于您的需求。我可能包含'CloseConnection'或'TearDown'函数,但在PHP中这样做并不是绝对必要的。 (PHP最好关闭并停止使用脚本末尾仍然打开的任何资源。)

但是,如果你想要更好地实践,那么现在就养成总是清理自己的习惯。你在幼儿园学到的东西适用:如果你打开它,关闭它。如果您创建了它,请将其丢弃。如果您已分配它,请取消分配。等

  

在同一个数据库中创建一个单独的表吗?

是。这个问题与模式设计有关,同样,您只需要尝试一下,看看哪些对您的情况和思维过程有效。当逻辑变得非常复杂时,你会知道事情是。但是,知道 除了体验之外别无其他。

  

如何生成单独的感谢信息?

与生成任何其他HTML的方式相同。某些版本的echoprintinclude / require。鉴于您当前的设置,我可能为此逻辑创建一个单独的函数。

有一件事不是你要求的,但我觉得有必要指出:严重考虑你的SQL的预备语句,而不是字符串插值。那是......

BAD:

$query   = "INSERT into newsletter (email) VALUES('" . $email . "')";
$success = $conn->query($query);

更好/ GOOD:

$sql       = "INSERT INTO newsletter (email) VALUE ( ? )";
$statement = $conn->prepare( $sql );
$statement->bind_param('s', $email);
$statement->execute();

这可能稍微复杂一点,但也排除了像real_escape_string那样的消毒需求。

有关详情,read the documentation和Google prepared statements,但要点是:出于安全原因,以及稍后的更高性能。通过告诉数据库将要发生什么,您可以排除injecting something you didn't expect or want的人。