【发布时间】:2020-12-02 04:38:26
【问题描述】:
将我的 Html 表单连接到 MySQL 数据库后,点击提交按钮时一直收到错误消息,没有数据传递到数据库。
下面是我得到的错误截图。
创建数据库和表结构
// create a database
//CREATE DATABASE student
//USE student
// create a table studentdetails
//CREATE TABLE IF NOT EXISTS studentdetails
(
id int(11) NOT NULL AUTO_INCREMENT,
name char(50) NOT NULL,
email varchar(50) NOT NULL,
password varchar(50) NOT NULL,
mobile bigint(20) NOT NULL,
gender enum('m','f') NOT NULL,
hobbies varchar(100) NOT NULL,
dob date NOT NULL,
address text NOT NULL,
profilePic varchar(255) NOT NULL,
registrationDate datetime NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY email (email)
)
PHP 脚本连接到 MySQL 数据库并从 HTML 表单中获取值
connect.php代码
<?php
//connectivity
$con=mysql_connect("localhost","root","") or die("not connected");
//select database
mysql_select_db("student",$con);
extract($_POST);
if(isset($save))
{
//for date of birt get one by one and concatente
$dob=$yy."-".$mm."--".$dd;
//hobbies retrieve in an array format change array into string
$h=implode(",",$hobb);
$img=$_FILES['pic']['name'];
//To check user already exists or not
$sql=mysql_query("select email from studentdetails where email='$e'");
$return=mysql_num_rows($sql);
//if $return returns true value it means user's email already exists
if($return)
{
$msg="<font color='red'>".ucfirst($e)."already exists choose another email</font>";
}
else
{
$query="insert into studentdetails values('','$n','$e','$p','$m','$g','$h','$dob','$add','$img',now())";
mysql_query($query);
$msg= "<font color='blue'>Your data saved</font>";
}
}
?>
//HTML脚本注册表
Register.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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Registration Form</title>
<style>
input,textarea{width:200px}
input[type=radio],input[type=checkbox]{width:10px}
input[type=submit],input[type=reset]{width:100px}
</style>
</head>
<body>
<form method="post" enctype="multipart/form-data">
<table width="393" border="1">
<tr>
<td colspan="2"><?php echo @$msg; ?></td>
</tr>
<tr>
<td width="159">Enter your Name</td>
<td width="218">
<input type="text" placeholder="your first name" name="n" pattern="[a-z A-Z]*" required /></td>
</tr>
<tr>
<td>Enter your Email</td>
<td><input type="email" name="e"/></td>
</tr>
<tr>
<td>Enter your Password</td>
<td><input type="password" name="p"/></td>
</tr>
<tr>
<td>Enter your Address</td>
<td><textarea name="add"></textarea></td>
</tr>
<tr>
<td>Enter your Mobile</td>
<td><input type="text" pattern="[0-9]*" name="m" /></td>
</tr>
<tr>
<td height="23">Select your Gender</td>
<td>
Male<input type="radio" name="g" value="m"/>
Female<input type="radio" name="g" value="f"/>
</td>
</tr>
<tr>
<td>Choose your Hobbies</td>
<td>
Cricket<input type="checkbox" value="cricket" name="hobb[]"/>
Singing<input type="checkbox" value="singing" name="hobb[]"/>
Dancing<input type="checkbox" value="dancing" name="hobb[]"/>
</td>
</tr>
<tr>
<td>Choose your Profile Pic </td>
<td><input type="file" name="pic"/></td>
</tr>
<tr>
<td>Select your DOB</td>
<td>
<select name="mm">
<option value="">Month</option>
<?php
for($i=1;$i<=12;$i++)
{
echo "<option value='$i'>".$i."</option>";
}
?>
</select>
<select name="dd">
<option value="">Date</option>
<?php
for($i=1;$i<=31;$i++)
{
echo "<option value='$i'>".$i."</option>";
}
?>
</select>
<select name="yy">
<option value="">Year</option>
<?php
for($i=1900;$i<=2015;$i++)
{
echo "<option value='$i'>".$i."</option>";
}
?>
</select>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" name="save" value="Register Me"/>
<input type="reset" value="Reset"/>
</td>
</tr>
</table>
</form>
</body>
</html>
我收到的错误消息的屏幕截图
【问题讨论】:
-
请注意,mysql_* 扩展自 PHP 5.5 起已被弃用,并在 PHP 7 中被删除。您应该考虑切换到 mysqli 或 PDO(推荐)。
-
除了@El_Vanja,如果您简单地转换为 mysqli 函数,您对 SQL 注入持开放态度。正如他们建议使用 PDO 一样,您需要使用准备好的语句。还有don't use extract.
-
永远不要
extract($_POST);这真的很危险。