[英]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.