鍍金池/ 問答/PHP/ PHP文件可以運行但數(shù)據(jù)寫不進數(shù)據(jù)庫。

PHP文件可以運行但數(shù)據(jù)寫不進數(shù)據(jù)庫。

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; 版權(quán)所有?盜版必究
        </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'";
        //執(zhí)行SQL語句
        $ret = mysqli_query($conn,$sql_select);
        $row = mysqli_fetch_array($ret);
        //判斷用戶名是否已存在
        if($username == $row['username']) {
            //用戶名已存在,顯示提示信息
            header("Location:register.php?err=1");
        } else {

            //用戶名不存在,插入數(shù)據(jù)
            //準備SQL語句
            $sql_insert = "INSERT INTO Users(username,password,sex,qq,email,phone,address) VALUES('$username','$password','$sex','$qq','$email','$phone','$address')";
            //執(zhí)行SQL語句
            mysqli_query($conn,$sql_insert);
            header("Location:register.php?err=3");
        }

        //關(guān)閉數(shù)據(jù)庫
        mysqli_close($conn);
    } else {
        header("Location:register.php?err=2");
    }
?>

報錯信息:php文件部署到xampp服務器的時候,輸入地址可以運行,但注冊頁面填寫的表單信息無法存入到數(shù)據(jù)庫(mysql)。
已嘗試過的方法:百度,查閱相關(guān)書籍,修改代碼,重新部署服務器,數(shù)據(jù)庫,均未解決!

回答
編輯回答
孤巷

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

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

這兩個地方

2018年6月8日 18:37
編輯回答
神曲

1.重點查兩個ErrLog,一個PHP的,一個MySQL的。
2.把使用的sql語句copy下來補上參數(shù)跑一跑看看有沒有問題。

另外,強烈推薦使用stmt操作sql,只需安裝mysqlnd擴展即可,就算有個用戶名叫;drop database xxx也沒關(guān)系,防注入。

2017年8月23日 15:33
編輯回答
悶騷型

sql執(zhí)行錯誤信息打印出來即可自己解決

2017年4月14日 12:01
編輯回答
使勁操

我用你的代碼,在我自己環(huán)境上測試,都是沒問題的,即使編碼前后端不統(tǒng)一也還是能插入數(shù)據(jù)。你那邊不能插入的話,建議你檢查一下你的數(shù)據(jù)庫的鏈接,或者是表的字段等信息。
clipboard.png
其中, 第一條是前后端都修改為utf-8的編碼后上傳,第二條是源碼只修改了數(shù)據(jù)庫鏈接參數(shù),也能上傳成功。

2017年10月19日 07:42
編輯回答
舊螢火

打斷點,看PHP執(zhí)行的哪里,然后輸出sql語句,一步一步排查就好了。問題一般出在程序中

2018年6月16日 13:22
編輯回答
生性

樓主直接把報錯信息貼出來看看

2017年7月2日 03:33
編輯回答
孤星

第一步

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

判斷是執(zhí)行了if還是else

第二步

echo $sql_insert;exit;

獲取sql語句,到mysql里執(zhí)行看是否執(zhí)行成功

2018年5月5日 15:07
編輯回答
歆久

編碼問題。 我在你的代碼里發(fā)現(xiàn)了UTF8和GB2312。 不知道你的數(shù)據(jù)庫的編碼是什么。 你應該保證三碼合一。 保證頁面上,后端和數(shù)據(jù)庫使用的編碼是同一種。

2018年1月20日 02:06