首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL更新不起作用

MySQL更新不起作用
EN

Stack Overflow用户
提问于 2012-08-29 04:40:33
回答 2查看 2.3K关注 0票数 1

我想根据用户input.My代码更新我的数据库的两个字段,如下所示:

代码语言:javascript
复制
 <body>
<?php
 $db_server["host"] = "localhost"; //database server
$db_server["username"] = "root"; // DB username
$db_server["password"] = "mypass"; // DB password
$db_server["database"] = "mudb";// database name

$dbc = mysql_connect($db_server["host"], $db_server["username"], $db_server["password"]);
mysql_select_db($db_server["database"], $dbc);
$user =  $_COOKIE['mycookie'];

    $q = "SELECT * FROM members WHERE username='$user'"; 
    $r = mysql_query( $q,$dbc);
    while ($row = mysql_fetch_array($r, MYSQLI_ASSOC)) { 
    echo 'username: '.$row['username'], '<br/>';

    $password=$row['password'];
?>

<form method="post" id="changepasswordform" > 
<input type="password" id="newpassword" name="newpassword"/>
<input type="submit"  name="changepasswordbutton"  >  
       </form>

<?php

        echo 'email:        '.$row['email'], '<br/>'; 
        }
?>

<form method="post" id="changeemailform" >  

        <input type="text" id="newemail" name="newemail"/>

       <input type="submit" value="αλλαγή"  name="changeemailbutton"  >
       </form>

<?php
}


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

                       $newpassword=$_POST['newpassword'];
                $q2 = "UPDATE members SET password=$newpassword WHERE username='$user'"; 

                $r2 = mysql_query($q2,$dbc);

}   

if (isset($_POST['changeemailbutton'])){
                    $newemail=$_POST['newemail'];
                    $q3 = "UPDATE members SET email=$newemail WHERE username='$user'"; 
                $r3 = @mysql_query( $q3,$dbc);  
}
?>
</body>

然而,尽管我与数据库的连接正常(SELECT按预期显示结果),但当我尝试更新时,我的数据库中的值保持不变。我检查了$newpassword和$newemail的值,它们确实包含用户输入的每个time.What是否在这里丢失?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-29 04:42:03

您缺少应该包含在密码字段两边的'' (引号)。更改:

代码语言:javascript
复制
UPDATE members SET password=$newpassword WHERE username='$user'

至:

代码语言:javascript
复制
UPDATE members SET password='{mysql_real_escape_string($password)}' 
WHERE username='{mysql_real_escape_string($user)}'

重要信息:

即使它不相关,也请不要使用mysql_*函数-它已被弃用,容易受到sql注入的攻击。最好使用PDO或MySQLi。

票数 4
EN

Stack Overflow用户

发布于 2012-08-29 04:47:26

这将完成此操作,并保存为用于sql注入(mysql_real_escape_string):

代码语言:javascript
复制
 $q2 = "UPDATE members SET 
   password='". mysql_real_escape_string($password) ."' 
   WHERE username='". mysql_real_escape_string($user) ."';

当然,您不应该再使用mysql_*了,我只是针对您的特定情况给出了一个示例。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12167198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档