我是网络开发的新手。在这段代码中,我试图创建一个表单,其中index.php中的表单向数据库发送信息。我的list.php应显示输入的用户列表。但是,我的index.php不会将数据发送到数据库。我在phpMyAdmin中的数据库是绝对空的。我不知道我的错误在哪里。请帮忙。 //Config.php
<?php
$dbhost = 'mysql51-031.wc2.dfw1.stabletransit.com';
$dbuser = '549359_sargis';
$dbpass = '*********';
$dbname = '549359_sargis';
$table = 'Contacts';
$connection = mysql_connect($dbhost,$dbuser,$dbpass) or die(mysql_error());
$select_db = mysql_select_db($dbname,$connection) or die(mysql_error());
?>
// index.php
<!DOCTYPE html>
<hmtl>
<head>
<title>Dashboard</title>
<?php include("config.php"); ?>
<link rel="stylesheet" type="text/css" href = "style.css">
<?php
if(isset($_POST['submit']))
{
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
$phone = $_POST['phonenumber'];
//$date = date('l jS \of F Y h:i:s A');
$sql = "INSERT INTO " . $table . " (firstname, lastname, email, phone_number, timesstamp) VALUES ('$firstname' , '$lastname' , '$email' , '$phonenumber', NOW())";
$query = mysql_query($sql);
if (!$query)
{
die('Error: ' . mysql_error());
}
}
?>
</head>
<body>
<a href="list.php">View List</a><hr/>
<form action="index.php" method = "POST">
<div>
First name: <input type ='text' id='firstname' name='firstname'/><br />
Last name: <input type = 'text' id='lastname' name='lastname'/><br />
Email: <input type = 'text' id='email' name='email'/><br />
Phone Number: <input type = 'text' id='phone_number' name='phonenumber'/><br />
<input type = 'submit' value='Add' />
</div>
</form>
</body>
</html>
答案 0 :(得分:1)
假设您发布了index.php
的内容,那么您的问题似乎就是将表单提交到list.php
,但您的数据处理代码位于index.php
。
<form action="list.php" method = "POST">
^^^^^^^^^^
难怪您没有任何错误消息,表格中没有数据。这是因为你的代码没有被执行。
因此,请将您的数据处理代码移至list.php
或制作自我提交表单,将action
属性的值留空
<form action="" method = "POST">
^^
成功插入数据后,并重定向到list.php
。
现在,如果您的timestamp
类型为datetime
或timestamp
,则可以更改
$date = date('l jS \of F Y h:i:s A');
到
$date = date('Y-m-d h:i:s');
或更改您的查询字符串以使用MySql的构建函数NOW()
或CURRENT_TIMESTAMP
,这是NOW()
的同义词。
$sql = "INSERT INTO " . $table . " (firstname, lastname, email, phone_number, timesstamp)
VALUES ('$firstname', '$lastname', '$email', '$phonenumber', NOW())";
旁注:使用prepared statements与mysqli_*
或PDO
,而不是插入查询字符串。在当前状态下,您的代码对SQL注入是开放的,并且您使用已弃用的mysql_*
扩展名。
答案 1 :(得分:0)
用大括号包裹你的变量:
$sql = "INSERT INTO " . $table . " (firstname, lastname, email,
phone_number, timesstamp) VALUES
('{$firstname}' , '{$lastname}' , '{$email}' , '{$phonenumber}',
'{$date}')";
$query = mysql_query($sql);
看看是否有帮助。
答案 2 :(得分:0)
1)将name='submit'
添加到表单按钮。因为if(isset($_POST['submit']))
。这种情况在您的代码中始终为false
。
<input type='submit' name='submit' value='Add' />
<!-- ^^^^ -->
2)您的表单操作设置为action="list.php"
,表单数据将提交到此文件。
确保您的数据库插入查询位于正确的文件中:list.php
。这意味着您应该将if(isset($_POST['submit'])){ ... }
块移至list.php
或将表单操作更改为action="index.php"
(当前文件)。
<form action="index.php" method="post">
<!-- ^^^^^^^^^ -->
3)在代码顶部添加这些行以启用错误以检测发生的情况。
ini_set('display_errors',1);
error_reporting(E_ALL);
4)添加var_dump($_POST)
以检查您的表单数据是否成功提交。因此输出应该是表单数据的数组。否则你就错了。
if(isset($_POST['submit'])) {
var_dump($_POST);
5) MySQL中的日期时间格式应为YYYY-MM-DD HH:MM:SS
。
使用MySQL方法而不是$date
来获取当前时间戳CURRENT_TIMESTAMP()
$sql = "INSERT INTO " . $table . "
(firstname, lastname, email, phone_number, timesstamp)
VALUES
('$firstname', '$lastname', '$email', '$phonenumber', CURRENT_TIMESTAMP())";