簡體   English   中英

通過PHP將HTML表單發送到MySQL

[英]HTML form sending to MySQL via PHP

我有一個小問題。 我正在嘗試將一些數據從頁面發送到數據庫。

HTML代碼:

[insert_php]
    $current_user = wp_get_current_user(); //I am using wordpress and I need php on page script.
    echo $current_user->ID; // here it shows "1" because I am admin.
[/insert_php]

<form action="http://mysitee.com/xxx.php" method="post">
    E-mail: <input type="text" name="email">
    Nick: <input type="text" name="user_name">
    Server: <select name="server">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3" selected>3</option>
        <option value="4">4</option>
    </select>
    <input type="hidden" name="reward" value="123">
    <input type="hidden" name="user_id" value="[insert_php]echo "$current_user->ID";[/insert_php]">
    <input type="submit" value="Submit">
</form>

這是PHP代碼:

<?php
    $link = mysql_connect('site.com', 'login', 'pass');
    mysql_select_db('mydb');

    // Check connection
    if (!$link) {
        die('Could not connect: ' . mysql_error());
    }

    $user_id = mysql_real_escape_string($link, $_POST['user_id']);
    $user_name = mysql_real_escape_string($link, $_POST['user_name']);
    $server = mysql_real_escape_string($link, $_POST['server']);
    $email = mysql_real_escape_string($link, $_POST['email']);
    $nagroda = mysql_real_escape_string($link, $_POST['reward']);

    mysql_query("INSERT INTO winners (user_id, user_name, server, email, reward)
    VALUES ('$user_id', '$user_name', '$server', '$email', '$nagroda')");

    if (!mysql_query($link)) {
        die('Error: ' . mysql_error($link));
    }

    echo "1 record added";

    mysql_close($link);
?> 

畢竟,我應該在數據庫表中獲得user_id 1,但獲得“ 0”,而在其他列中沒有獲得可變變量。 另外,當我啟動此腳本時,我只會收到“錯誤:”。 有任何想法嗎?

這里。 您在使用mysql_query("INSERT...並且if (!mysql_query($link))時,按Andrewsi所述兩次調用mysql_query() if (!mysql_query($link))

另外,您正在使用基於mysqli的方法mysql_real_escape_string($link擺脫了$link,或者更好的是,僅使用mysqli_*

修改為$query = mysql_query("INSERT...然后使用查詢變量
if (!$query,$link)代替。

<?php
    $link = mysql_connect('site.com', 'login', 'pass');
    mysql_select_db('mydb');

    // Check connection
    if (!$link) {
        die('Could not connect: ' . mysql_error());
    }

    $user_id = mysql_real_escape_string($_POST['user_id']);
    $user_name = mysql_real_escape_string($_POST['user_name']);
    $server = mysql_real_escape_string($_POST['server']);
    $email = mysql_real_escape_string($_POST['email']);
    $nagroda = mysql_real_escape_string($_POST['reward']);

    $query = mysql_query("INSERT INTO winners (user_id, user_name, server, email, reward)
    VALUES ('$user_id', '$user_name', '$server', '$email', '$nagroda')");

    if (!$query) {
        die('Error: ' . mysql_error());
    }

    echo "1 record added";

    mysql_close($link);
?> 

腳注:

mysql_*函數棄用通知:

http://www.php.net/manual/zh/intro.mysql.php

自PHP 5.5.0起不推薦使用該擴展,不建議編寫新代碼,因為將來會刪除該擴展。 相反,應使用mysqliPDO_MySQL擴展名。 另請參見MySQL API概述,以獲取選擇MySQL API時的更多幫助。

這些功能使您可以訪問MySQL數據庫服務器。 有關MySQL的更多信息,請參見» http://www.mysql.com/

可以在» http://dev.mysql.com/doc/中找到MySQL的文檔。


加,

這是一些有關(mysqli)准備好的語句的教程,您可以研究和嘗試:

以下是有關PDO的一些教程:

它的 -

mysql_real_escape_string(string, connection)

而您卻做了相反的事情。 修復如下-

mysql_real_escape_string($_POST['user_id'], $link)


建議:不要使用mysql_ *語句,因為在最近的PHP版本中不推薦使用它們。 學習准備mysqli或PDO。

There is a little modification in the code. I think it ll help
    <?php
        $link = mysql_connect('site.com', 'login', 'pass');
        mysql_select_db('mydb');

        // Check connection
        if (!$link) {
            die('Could not connect: ' . mysql_error());
        }

        $user_id = mysql_real_escape_string($link, $_POST['user_id']);
        $user_name = mysql_real_escape_string($link, $_POST['user_name']);
        $server = mysql_real_escape_string($link, $_POST['server']);
        $email = mysql_real_escape_string($link, $_POST['email']);
        $reward = mysql_real_escape_string($link, $_POST['reward']);

        $sql="INSERT INTO winners (user_id, user_name, server, email, reward)
        VALUES ('$user_id', '$user_name', '$server', '$email', '$nagroda')";

        if (!mysql_query($sql,$link)) {
            die('Error: ' . mysql_error($link));
        }

        echo "1 record added";

        mysql_close($link);
    ?> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM