PHP文件可以运行但数据写不进数据库。

苏格拉没有底
  • 121

register.php文件:

<!DOCTYPE html>
<html>
<head>
<title>注册</title>
<meta name="content-type"; charset="UTF-8">
</head>
<body>
    <div class="content" align="center">
        <!--头部-->
        <div class="header">
        <h1>注册页面</h1>
        </div>
        <!--中部-->
        <div class="middle">
            <form action="register_action.php" method="post">
                <table border="0">
                    <tr>
                        <td>用户名:</td>
                        <td><input type="text" id="id_name" name="username" required="required"></td>
                    </tr>
                    <tr>
                        <td>密&nbsp;&nbsp;&nbsp;码:</td>
                        <td><input type="password" id="password" name="password" required="required"></td>
                    </tr>
                    <tr>
                        <td>重复密码:</td>
                        <td><input type="password" id="re_password" name="re_password" required="required"></td>
                    </tr>
                    <tr>
                        <td>性别:</td>
                        <td>
                            <input type="radio" id="sex" name="sex" value="男">男
                            <input type="radio" id="sex" name="sex" value="女">女
                        </td>
                    </tr>
                    <tr>
                        <td>QQ:</td>
                        <td><input type="text" id="qq" name="qq" required="required"></td>
                    </tr>
                    <tr>
                        <td>Email:</td>
                        <td><input type="email" id="email" name="email" required="required"></td>
                    </tr>
                    <tr>
                        <td>电话:</td>
                        <td><input type="text" id="phone" name="phone" required="required"></td>
                    </tr>
                    <tr>
                        <td>地址:</td>
                        <td><input type="text" id="address" name="address" required="required"></td>
                    </tr>
                    <tr>
                        <td colspan="2" align="center" style="color:red;font-size:10px;">
                        <!--提示信息-->
                            <?php
                                header("Content-Type:text/html;charset=gb2312");
                                $err=isset($_GET["err"])?$_GET["err"]:"";
                                switch($err) {
                                    case 1:
                                    echo "用户名已存在!";
                                    break;
                                    case 2:
                                    echo "密码与重复密码不一致!";
                                    break;
                                    case 3:
                                    echo "注册成功!";
                                    break;
                                }
                            ?>
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2" align="center">
                            <input type="submit" id="register" name="register" value="注册">
                            <input type="reset" id="reset" name="reset" value="重置">
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2" align="center">
                            如果已有账号,快去<a href="login.php">登录</a>吧!
                        </td>
                    </tr>
                </table>
            </form>
        </div>
        <!--脚部-->
        <div class="footer">
        <small>Copyright &copy; 版权所有・盗版必究
        </div>
    </div>
</body>
</html>

register_action.php文件:

<?php
    //声明变量
    header("Content-Type:text/html;charset=gb2312");
    $username = isset($_POST['username'])?$_POST['username']:"";
    $password = isset($_POST['password'])?$_POST['password']:"";
    $re_password = isset($_POST['re_password'])?$_POST['re_password']:"";
    $sex = isset($_POST['sex'])?$_POST['sex']:"";
    $qq = isset($_POST['qq'])?$_POST['qq']:"";
    $email = isset($_POST['email'])?$_POST['email']:"";
    $phone = isset($_POST['phone'])?$_POST['phone']:"";
    $address = isset($_POST['address'])?$_POST['address']:"";

    if($password == $re_password) {
        //建立连接
        $conn = mysqli_connect('localhost','root','1234','mysql');
        //准备SQL语句,查询用户名
        $sql_select="SELECT username FROM Users WHERE username = '$username'";
        //执行SQL语句
        $ret = mysqli_query($conn,$sql_select);
        $row = mysqli_fetch_array($ret);
        //判断用户名是否已存在
        if($username == $row['username']) {
            //用户名已存在,显示提示信息
            header("Location:register.php?err=1");
        } else {

            //用户名不存在,插入数据
            //准备SQL语句
            $sql_insert = "INSERT INTO Users(username,password,sex,qq,email,phone,address) VALUES('$username','$password','$sex','$qq','$email','$phone','$address')";
            //执行SQL语句
            mysqli_query($conn,$sql_insert);
            header("Location:register.php?err=3");
        }

        //关闭数据库
        mysqli_close($conn);
    } else {
        header("Location:register.php?err=2");
    }
?>

报错信息:php文件部署到xampp服务器的时候,输入地址可以运行,但注册页面填写的表单信息无法存入到数据库(mysql)。
已尝试过的方法:百度,查阅相关书籍,修改代码,重新部署服务器,数据库,均未解决!

回复
阅读 4.5k
8 个回答

第一步

if($username == $row['username']) {
    echo "if";exit;
} else {
    echo "else ";exit;
}

判断是执行了if还是else

第二步

echo $sql_insert;exit;

获取sql语句,到mysql里执行看是否执行成功

xzccccccc
  • 2
新手上路,请多包涵

编码问题。 我在你的代码里发现了UTF8和GB2312。 不知道你的数据库的编码是什么。 你应该保证三码合一。 保证页面上,后端和数据库使用的编码是同一种。

X_Metal
  • 2
新手上路,请多包涵

<meta name="content-type"; charset="UTF-8">

header("Content-Type:text/html;charset=gb2312");

这两个地方

我用你的代码,在我自己环境上测试,都是没问题的,即使编码前后端不统一也还是能插入数据。你那边不能插入的话,建议你检查一下你的数据库的链接,或者是表的字段等信息。
clipboard.png
其中, 第一条是前后端都修改为utf-8的编码后上传,第二条是源码只修改了数据库链接参数,也能上传成功。

1.重点查两个ErrLog,一个PHP的,一个MySQL的。
2.把使用的sql语句copy下来补上参数跑一跑看看有没有问题。

另外,强烈推荐使用stmt操作sql,只需安装mysqlnd扩展即可,就算有个用户名叫;drop database xxx也没关系,防注入。

打断点,看PHP执行的哪里,然后输出sql语句,一步一步排查就好了。问题一般出在程序中

宣传栏