【问题标题】:SQL query not updating databaseSQL查询不更新数据库
【发布时间】:2014-09-21 09:29:17
【问题描述】:

我的数据库没有更新,也没有显示任何错误,有人吗? 我已经设置了 $id 和所有变量,但是如果我在查询中做错了,你能请教吗? 提前谢谢你

PHP 代码

                <?php  

                    //get values from Database for user
                    if (isset($_GET['id']) ) { 
                        $id = (int) $_GET['id']; 
                        $result = mysql_query("SELECT * FROM Credentials, Company WHERE Credentials.ID = $id AND Company.CompanyID = $id") or trigger_error(mysql_error());
                        $row = mysql_fetch_array($result);
                    }

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


                        //define index for variables 
                        if(isset($_POST['email'])){
                            $email = $_POST['email'];
                        }
                        if(isset($_POST['password'])){
                            $password = $_POST['password'];
                        }
                        if(isset($_POST['permission'])){
                            $permission = $_POST['permission'];
                        }
                        if(isset($_POST['status'])){
                            $status = $_POST['status'];
                        }


                            //safe input for all fields 
                            $email = safe_input($email);
                            $password = safe_input($password); 
                            $permission = safe_input($permission);
                            $status = safe_input($status); 






                            //double checking inputs
                            foreach($_POST AS $key => $value) { $_POST[$key] = mysql_real_escape_string($value); } 

                            //SQL queries
                            $sql = mysql_query("UPDATE Credentials SET  `Email` =  '".$email."' ,  `Password` =  '".$password."' ,  `Permission` =  '".$permission."',  `Status` =  '".$status."'  WHERE `ID` = $id ")  or die(mysql_error());

                                echo "<div id='add-success'><i class='fa fa-check'></i>&nbsp;<b>Updated Successfuly!</b></div><br/>";
                            } 

                ?>

HTML

                <form action='edit.php?id=<?php echo safe_input($id); ?>' method='POST' id="add-merchant" enctype="multipart/form-data"> 

                    <p><br />
                    <h6>Email</h6>
                    <input type='text' name='email' value="<?php echo nl2br($row['Email']); ?>" 
                            onfocus="if (this.value==this.defaultValue) this.value = ''" 
                            onblur="if (this.value=='') this.value = this.defaultValue"/> 
                    <p><br />
                    <h6>Enter New Password</h6>
                    <input type='text' name='password' value='Password'  
                            onfocus="if (this.value==this.defaultValue) this.value = ''" 
                            onblur="if (this.value=='') this.value = this.defaultValue"/> 
                    <p><br />
                    <h6>Permission</h6>
                    <select name="permission">
                        <option value="0" selected>Unverified</option>
                        <option value="1">Verified</option>
                    </select>
                    <p><br />
                    <h6>Status</h6>
                    <select name="status">
                        <option value="1" selected>Activated</option>
                        <option value="0">Deactivated</option>
                    </select>


                    <p><input type='submit' value='Update' /><input type='hidden' value='1' name='submitted' /> 

                </form> 

【问题讨论】:

  • 做一些echo 来测试你的if 语句中的脚本是否被执行
  • 检查你的if是否满足条件!
  • 我已经设置了一个回显语句没有错误并且查询成功并且它显示“成功更新”
  • 用更多细节更新了我的代码

标签: php mysql database


【解决方案1】:

id字段是否为数字,如果是,那么你的sql查询应该是这样的。

$sql = mysql_query("UPDATE Credentials SET  `Email` =  '".$email."',  `Password` =  '".$password."',  `Permission` =  '".$permission."', `Status` =  '".$status."'  WHERE `ID` = $id ") // id = $id without quotes because it is numeric

如果上面的查询不起作用,试试这个

mysql_query("UPDATE Credentials SET  `Email` =  '{$email}',  `Password` =  '{password}',  `Permission` =  '{$permission}', `Status` =  '{$status}'  WHERE `ID` = $id")

如果这也不起作用,请将查询粘贴到 phpmyadmin 或您的数据库中,如果可能,请尝试在线运行查询。同时设置 error_reporting(E_ALL) 以让浏览器显示错误;

【讨论】:

  • id 是数字我已经尝试过不带引号但它也没有工作,除此之外还能是什么?
  • 第二个成功了,奇怪的是我的查询以前是这样但没有成功,我想是缺少了什么,非常感谢 Abhijeet
  • @roberto 不用说谢谢,因为我们都在这里回答彼此的问题
【解决方案2】:

首先检查'if'条件是否为真。我像这样修改了您的查询并为我工作。

    $DB_NAME = "database name";
    $HOST = "localhost";
    $USER = "mysql username";
    $PASSWD = "mysql password";

    $conn = mysql_connect($HOST,$USER,$PASSWD);
    mysql_select_db('Credentials', $conn);

'$conn' 指定 MySQL 连接

    $sql = mysql_query("UPDATE Credentials SET  `Email` =  '".$email."',  `Password` =  '".$password."',  `Permission` =  '".$permission."', `Status` =  '".$status."'  WHERE `ID` = '$id' ", $conn)  or die(mysql_error());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-20
    • 1970-01-01
    相关资源
    最近更新 更多