MySQLi& mysql_real_escape_string()给我一堆错误

时间:2014-08-03 04:45:22

标签: string mysqli escaping

我的UPDATE代码有问题。因为我是php的新手,我试着通过我的UPDATE命令找出什么是问题,这是我的代码行。我的插入和删除命令很好,但这个让我头疼了4个小时。

<?php

            include 'includes/conn.php';
            if($_POST){
                    //write query
                    $sql = "UPDATE 
                                            member 
                                    SET
                                            fname = ?, 
                                            lname = ?,
                                            mname = ?,
                                            email = ?,
                                            address = ?,
                                            gender = ?,
                                            contact = ?,
                                            email = ?,
                                            username = ?,
                                            password  = ?
                                    WHERE 
                                            mem_id = ?";

                    $stmt = $mysqli->prepare($sql);
                    $stmt->bind_param(
                            'sssssssssi', 
                            $_POST['fname'], 
                            $_POST['lname'],
                            $_POST['mname'],
                            $_POST['email'],
                            $_POST['address'],
                            $_POST['gender'],
                            $_POST['contact'],                              
                            $_POST['username'],
                            $_POST['password'],
                            $_POST['mem_id']
                    );


                    if($stmt->execute()){
                            echo "User was updated.";
                            $stmt->close();
                    }else{
                            die("Unable to update.");
                    }
            }
                         $sql = "SELECT 
                                fname, lname, mname, email, address, gender, contact,    username, password, mem_id
                        FROM 
                                member
                        WHERE 
                                mem_id = \"" . $mysqli->real_escape_string($_GET['mem_id']) . "\"
                        LIMIT 
                                0,1";

                        $result = $mysqli->query( $sql );

                        $row = $result->fetch_assoc();
                        extract($row);

                        $result->free();
                        $mysqli->close();
                        ?>

希望你们可以通过它给我这个错误的方式帮助o

  

未定义的索引:第134行的C:\ xampp \ htdocs \ prjTheVillagePlaygroup \ execute_editmenu.php中的mem_id

     

警告:extract()期望参数1为数组,在第141行的C:\ xampp \ htdocs \ prjTheVillagePlaygroup \ execute_editmenu.php中给出null

1 个答案:

答案 0 :(得分:1)

你有

email = ?

在update语句中列出两次。删除第二个。

请注意,您的绑定不必更改。删除后它将具有正确数量的参数。

此外,您使用的$_GET['mem_id']应该是$_POST['mem_id'] - 所有其他变量都设置为$_POST

关于Warning: extract() expects parameter 1 to be array, null given,这是由于查询失败。

检查$ result以确保查询成功以及错误是什么:

$result = $mysqli->query( $sql );
if (!$result) 
    printf("Error: " . mysqli->error); // or use die("Error: " . mysqli->error)
}


$row = $result->fetch_assoc();
extract($row);