我有一个字段,我确信输入字段中的条目会像爱德华、约翰、雅各布一样。
现在,我正在尝试为每个人插入一个新行。 我正在这样做:
$person = mysql_real_escape_string($_POST['person']);
foreach($person_array as $value)
{
$insert = "INSERT INTO people (Person)
VALUES ('".$value."')";
$query = mysql_query($insert) or die ("Error: ".mysql_error());
}
使用上面的查询,我无法插入到表中。 我做错了什么?
如果 $_POST['person'] 确实是一个这样的值:"John, Edward, Jacob",那么它只是一个字符串;你需要用 explode 将其转换为数组。此外,它应该是 _POST 美元而不是$POST。
$person = explode(',', $_POST['person']);
然后,您可以运行 foreach 函数。
正如 DampeS8N 所评论的那样,mysql_real_escape_string
返回一个字符串。您不能将其应用于Array
。
此外,anuragbh 在您的代码上发现了一个拼写错误,它是$_POST
而不是$POST
。
最后,尝试转义循环中的特殊字符。
foreach($_POST['person'] as $value)
{
$value = mysql_real_escape_string($value);
//your query here
}
您的输入应如下所示:<input type="text" name="person[]">
假设是这种情况,则您正在数组上运行mysql_real_escape_string
。
试试这个:
$person = $POST['person'];
foreach($person as $value) {
$value = mysql_real_escape_string($value);
$insert = "INSERT INTO people (Person) VALUES ('$value')";
$query = mysql_query($insert) or die("Error: ".mysql_error());
}
你得到的错误是什么?其主键是否自动递增?
也:
$person = mysql_real_escape_string($POST['person']);
应该是:
$person = mysql_real_escape_string($_POST['person']);