我的目标是从textarea中提取每一行并将其保存到我的mysql db。
我认为我的问题在于AJAX函数或部分,我从textarea获取行,但是看看你自己:
//#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-line分别保存在我的数据库中。
答案 0 :(得分:1)
“data”属性需要一个具有“attribute”的对象:值对,并且你给他一个字符串。
$.ajax({
type: 'POST',
url: 'inc.php?ban_user',
data: {'user_ip': ips},
dataType: 'html',
success: function(data) {
alert(data);
},
error: function() {
alert("Error");
}
});
答案 1 :(得分:0)
不要在用户端(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);
}
}
答案 2 :(得分:0)
我会使用以下方法调用来执行此操作:
$lines = preg_split( '/\r\n|\r|\n/', $string );
这将为您提供文本中所有行的数组。在此之后,您只需要通过它进行迭代并将每个值添加到数据库中。
答案 3 :(得分:0)
你的问题在于:
var ips = content.split("\n");
split()
返回所有字符串的数组。
答案 4 :(得分:0)
如果您向我们展示了包含$ _POST [“user_ip”]的内容,那将会很有帮助。
$ .val()方法返回集合中 first 元素的值 - 因此它不适用于多个textareas(如果这是你认为的那样)。
你得到字符串值并将其转换为逐行字符串数组,然后将隐式转换回单个字符串 - 为什么?只需将'content'值发送到您的脚本,然后在那里按换行分配。
(顺便说一下,代码仍然容易受到SQL注入攻击)。