PHP不会更新MySQL

时间:2016-02-26 15:24:13

标签: php mysql

我已经在这里对其他人的问题进行了一些研究,但我看不出有什么问题。我正在尝试更新已经拥有当前用户(已登录)数据的表单,但我希望他们能够更新他们的个人资料。

这就是我的代码:

  <?php
      // Retreive db data
    $me = $_SESSION['username'];
    require('db.php');

    $data = "SELECT username, email FROM users WHERE username='$me'";

    $query = mysql_query($data);
    $data2 = mysql_fetch_array($query);



    // Updating
    $Username=$data2['username'] ;
    $Email= $data2['email'] ;

    if(isset($_POST['save']))
    {
    $username_save = mysql_real_scape_string($_POST['username']);
    $email_save = mysql_real_scape_string($_POST['email']);

    mysql_query("UPDATE users SET username ='$username_save', email ='$email_save' WHERE username = '$me'")
    or die(mysql_error());
    echo "Saved!";

    }
       ?>




       <form role="form">
         <div class="form-group">
           <label for="username">Username: </label>
           <input type="text" class="form-control" name="username_save" value="<?php echo $data2['username']?>">
         </div>
         <div class="form-group">
           <label for="pwd">Email Address: </label>
           <input type="email" class="form-control" name="email_save" value="<?php echo $data2['email']?>">
         </div>
         <button input type="Submit" name="save" class="btn btn-info">Submit</button>
          <button input type="Sumbit" name="delete" class="btn btn-danger">Delete</button>
      </form>

当我提交新值(回显值正常)并按提交(用户名= danielleeee email = test@danielle.com)时,我的网址如下所示:

  

页/管理/ edit.php username_save = danielleeee&安培; email_save =测试%40danielle.com&安培;保存=

如果有人能为我揭开这一点,那就太棒了! 谢谢。

1 个答案:

答案 0 :(得分:2)

如果未明确暗示<form>,则

<form role="form">默认使用GET方法。

所以,=&gt; <form role="form" method="post">

因为你正在使用POST数组。

奇怪的是,错误报告也不会让你任何关于它的事情。

  • 我曾经艰难地学到了这一课,“曾经”

此外,请确保在使用会话后启动会话。

然而,错误报告

但是,name="username_save"name="email_save"这些与您的POST阵列不同。

  • $_POST['username'] =&gt; $_POST['username_save']
  • $_POST['email'] =&gt; $_POST['email_save']

那些需要匹配和错误报告的人会抛出未定义的索引通知。

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Then the rest of your code

旁注:只应在暂存时进行显示错误,而不是生产。

脚注:

最好为POST数组使用条件!empty()!是PHP中的“NOT”运算符。

并确保没有传递空值。

即:

if(isset($_POST['save']))
{

if(!empty($_POST['username_save']) && !empty($_POST['email_save']) ){
$username_save = mysql_real_scape_string($_POST['username_save']);
$email_save = mysql_real_scape_string($_POST['email_save']);

mysql_query("UPDATE users SET username ='$username_save', email ='$email_save' 
             WHERE username = '$me'")
or die(mysql_error());
echo "Saved!";

}

}

旁注:您可以将&&(AND)替换为||(或),具体取决于您希望使用的条件。

另外,如上所述。 MySQL_ API将从未来的PHP版本中删除。最好继续使用MySQLi或PDO API并使用准备好的语句。

参考文献: