当我通过PHP表单插入数据时,我成功地在MySQL的表中添加了一列,电子邮件和密码已成功添加,但用户名没有成功。
当我显示表格时,"用户名"表格仍然是空白的。
这是PHP形式:
<html>
<head>
<title>Register</title>
</head>
<body>
<?php
if(isset($_POST['add']))
{
$dbhost = 'localhost:3036';
$dbuser = 'xxxx';
$dbpass = 'xxxxxxx';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
if(! get_magic_quotes_gpc() )
{
$email = addslashes ($_POST['email']);
$password = addslashes ($_POST['password']);
$usernames = addslashes ($_POST['usernames']);
}
else
{
$email = $_POST['email'];
$password = $_POST['password'];
$usernames = $POST['usernames'];
}
$sql = "INSERT INTO users (email,usernames,password) VALUES ('$email', '$usernames', ENCRYPT('$password'))";
mysql_select_db('dbname');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not enter data: ' . mysql_error());
}
echo "Entered data successfullyn";
mysql_close($conn);
}
else
{
?>
<form method="post" action="<?php $_PHP_SELF ?>">
<table width="400" border="0" cellspacing="1" cellpadding="2">
<tr>
<td width="100">Your Email @foo.com</td>
<td><input name="email" type="text" id="email"></td>
</tr>
<tr>
<td width="100">Your Username</td>
<td><input name="usernames" type="text" id="usernames"></td>
</tr>
<tr>
<td width="100">Your Password</td>
<td><input name="password" type="password" id="password"></td>
</tr>
<tr>
<td width="100"> </td>
<td> </td>
</tr>
<tr>
<td width="100"> </td>
<td>
<input name="add" type="submit" id="add" value="Register">
</td>
</tr>
</table>
</form>
<?php
}
?>
</body>
</html>
我使用命令行添加了用户名列:
ALTER TABLE tbname ADD usernames VARCHAR(55) NOT NULL;
它已添加,但当用户注册时,他的用户名未显示。仅添加电子邮件和加密密码。
任何帮助将不胜感激。
更改此行 $usernames = $POST['usernames'];
将其更改为 $usernames = $_POST['usernames'];
首先不要使用 mysql,使用 mysqli/pdo。关闭魔术引号,如果您坚持使用 mysql(不要),请将addslashes()
切换到 mysql_real_escape_string()
。
而且您拥有:
$usernames = $POST['usernames'];
缺少_
:
$usernames = $_POST['usernames'];
但是您的数据库模式(即 NOT NULL
)应该注意没有空数据,因此还要确保您的选择是正确的。
不要使用 mysql_* 函数,至少要转义所有用户输入。
改变
$usernames = $POST['usernames'];
自
$usernames = $_POST['usernames'];
开发启用display_errors时,您可以轻松发现此错误:
error_reporting(E_ALL);