【问题标题】:I have added a column to a MySQL table but no data is showing我在 MySQL 表中添加了一列,但没有显示数据
【发布时间】:2012-10-12 07:57:35
【问题描述】:

当我通过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 successfully\n";
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;

已添加,但当用户注册时,他的用户名未显示。仅添加电子邮件和加密密码。

任何帮助将不胜感激。

【问题讨论】:

  • 要做的第一件事:检查用户名是否真的存在于插入语句中,方法是将其转储到某个日志文件(例如使用syslog)。
  • 数据库中有数据吗?我猜你只是选错了。

标签: php mysql


【解决方案1】:

改变这一行 $usernames = $POST['usernames'];

改成 $usernames = $_POST['usernames'];

【讨论】:

    【解决方案2】:

    首先不要使用mysql,使用mysqli/pdo。关闭魔术引号,如果你坚持使用 mysql(不要)切换 addslashes()mysql_real_escape_string()

    你有:

    $usernames = $POST['usernames'];
    

    缺少_

    $usernames = $_POST['usernames'];
    

    但是您的数据库架构(即NOT NULL)应该注意没有空数据,因此还要确保您的选择是正确的。

    【讨论】:

      【解决方案3】:

      不要使用 mysql_* 函数,至少要转义所有用户输入....

      改变

      $usernames = $POST['usernames'];
      

      $usernames = $_POST['usernames'];
      

      开发时启用 display_errors 以便您轻松发现此错误:

      error_reporting(E_ALL);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-07-13
        • 1970-01-01
        • 1970-01-01
        • 2019-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多