【发布时间】:2016-09-02 13:49:52
【问题描述】:
我对 PHP 还很陌生,我在 youtube 上学习了一个简单的教程,我按照 youtube 视频进行了两次和三次检查,以确保我输入的所有内容都是正确的,并且仍然没有插入数据。
我在互联网上搜索了几个小时,我想出了一个修复方法,但我认为这不是正确的方法
HTML
<html>
<head>
<title>Insert Form Data In MYSQL Database Using PHP</title>
</head>
<body>
<form action="insert.php" method="post">
Name : <input type="text" name="username">
<br/>
Email : <input type="text" name="email">
<br/>
<input type="submit" value="Insert">
</form>
</body>
</html>
PHP
<?php
$con = mysqli_connect('localhost','root','');
if (!$con) {
echo 'Not Connected To Server';
}
if (!mysqli_select_db($con,'tutorial')) {
echo 'Database Not Selected';
}
if (isset($_POST['username'])){
$Name = $_POST['username'];
}
if (isset($_POST['email'])){
$Email = $_POST['email'];
}
$sql = "INSERT INTO person (Name, Email) VALUES ('John', 'john@gmail.com')";
if (!mysqli_query($con,$sql)) {
echo 'Not Inserted';
} else {
echo 'Inserted Successfully!';
}
header("refresh:10; url=index.html");
?>
我用 John 和 john@gmail.com 替换了 '$Name' 和 '$Email',然后我将其输入到 html 表单中,数据正确地进入了数据库。
然后我在网上找到了另一个带有更多 PHP 的 HTML 表单,但它做同样的事情(不向数据库插入任何数据)
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Add Record Form</title>
</head>
<body>
<form action="insert1.php" method="post">
<p>
<label for="firstName">First Name:</label>
<input type="text" name="firstname" id="firstName">
</p>
<p>
<label for="lastName">Last Name:</label>
<input type="text" name="lastname" id="lastName">
</p>
<p>
<label for="emailAddress">Email Address:</label>
<input type="text" name="email" id="emailAddress">
</p>
<input type="submit" value="Submit">
</form>
</body>
</html>
PHP
<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$link = mysqli_connect("localhost", "root", "", "demo");
// Check connection
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
// Escape user inputs for security
$first_name = mysqli_real_escape_string($link, $_POST['firstname']);
$last_name = mysqli_real_escape_string($link, $_POST['lastname']);
$email_address = mysqli_real_escape_string($link, $_POST['email']);
// attempt insert query execution
$sql = "INSERT INTO persons (first_name, last_name, email_address) VALUES ('$first_name', '$last_name', '$email_address')";
if(mysqli_query($link, $sql)){
echo "Records added successfully.";
} else{
echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
// close connection
mysqli_close($link);
?>
字段为空白,任何帮助将不胜感激!
顺便说一句,这就是我正在使用 xampp 服务器的字段显示方式。
【问题讨论】:
-
一个很好的测试方法是回显变量来检查你的进度。例如,回声 $first_name 。 “”。 $姓氏。 “”。 $电子邮件地址;在它们被声明后,并 echo $sql;创建后。你得到你所期望的了吗?
-
那么你从这些代码中得到了什么信息
-
我注意到它们都连接到不同的数据库。您是否有一个名为
tutorial的数据库和/或一个名为demo的数据库 -
将
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);添加到脚本的顶部。这将强制任何mysqli_错误生成一个您不能错过或忽略的异常。 -
注意:未定义索引:第 12 行 C:\xampp\htdocs\search\insert1.php 中的名字 注意:未定义索引:C:\xampp\htdocs\search\insert1.php 中的姓氏第 13 行注意:未定义索引:第 14 行记录添加成功的 C:\xampp\htdocs\search\insert1.php 中的电子邮件。编辑,是的,我正在测试 2 个不同的数据库。