簡體   English   中英

將行從textarea保存到數據庫

[英]Save lines from textarea to database

我的目標是從textarea中提取每一行並將其保存到我的mysql數據庫中。

我認為我的問題出在AJAX函數或該部分中,我從文本區域獲得了線條,但看到了自己:

//#userip = textarea;


    var content = $("#user_ip").val();
    var ips = content.split("\n");

    $.ajax({
        type:       'POST',
        url:        'inc.php?ban_user',
        data:       'user_ip='+ips,
        dataType:   'html',
        success:    function(data) {
            alert(data);
        },
            error: function() {
                alert("Error");
        }
    });

PHP部分是:

        if (isset($_POST["user_ip"])) {

        $user_ip   = htmlspecialchars(trim($_POST["user_ip"]));

            mysql_query("INSERT into banned (ip) values ('$user_ip')") or die(mysql_error());

        echo($user_ip);

    }

此時, $user_ip似乎只是所有textarealines組合中的一個字符串。

我知道以這種方式上面的php代碼將無法正常工作,它將所有行保存為一個結果!

我想要的是:將每個txtarea行分別保存在我的數據庫中。

“數據”屬性想要一個帶有“屬性”:值對的對象,然后給他一個字符串。

$.ajax({
        type:       'POST',
        url:        'inc.php?ban_user',
        data:       {'user_ip': ips},
        dataType:   'html',
        success:    function(data) {
            alert(data);
        },
            error: function() {
                alert("Error");
        }
    });

不要在客戶端(ajax)上而是在php腳本內拆分用戶輸入的字符串。

if (isset($_POST["user_ip"])) {
  $user_ip   = explode("\n",htmlspecialchars(trim($_POST["user_ip"])));
  foreach ( $user_ip AS $uip ) {
    mysql_query("INSERT into banned (ip) values ('$uip')") or die(mysql_error());
    echo($uip);
  }
}

我可以通過以下方法調用來做到這一點:

$lines = preg_split( '/\r\n|\r|\n/', $string );

這將為您提供文本中所有行的數組。 之后,您只需要遍歷它,並將每個值添加到數據庫中。

您的問題在於:

var ips = content.split("\n");

split()返回所有字符串的數組。

如果您向我們展示了$ _POST [“ user_ip”]包含的內容,將會很有幫助。

$ .val()方法從集合中的第一個元素返回值-因此它不適用於多個文本區域(如果您認為這樣做的話)。

您獲取字符串值並將其轉換為逐行的字符串數組,然后隱式轉換回單個字符串-為什么? 只需將“內容”值發送到腳本,然后在那里用換行符分割即可。

(順便說一句,代碼仍然容易受到SQL注入的攻擊)。

暫無
暫無

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

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