我正在尝试从允许多个复选框的表单中插入多行来插入mysql表。
这是表格:
<input type='submit' name='invite-group' value='Invite To Group'>
<br />
<?php
$query2aac = mysql_query("SELECT * FROM follow WHERE yoozer1='$userdb1a' AND followaccept='Yes' ORDER BY yoozer2 DESC");
while($row2aac = mysql_fetch_array($query2aac))
{
$rowid = $row2aac['followid'];
$yoozer2aac = $row2aac['yoozer2'];
$yoozer2aacurl = strtolower($yoozer2aac);
$palurl = '<a href="http://www.bunchofus.com/fanpage/' . $yoozer2aacurl . '">' . $yoozer2aac . '</a>';
echo '<input type= "hidden" name = "id[]" value="' . $rowid . '"></input>';
echo '<input type= "checkbox" name = "friends[]" value="' . $yoozer2aac . '">' . $palurl . '</input><br />';
}
?>
这是php:
if ($submit)
{
$submit = $_POST['invite-group'];
$date1 = date("Y-m-d");
$lowername = strtolower($username);
$combined = $_POST['friends'];
foreach ($combined as $username)
{
$insert1 = mysql_query("INSERT INTO grprequest VALUES ('','$grpid3','$username','$myuser','$grprights3','$grpactive3')");
}
}
?>
它在数据库中插入一行但不是多行。如果我在foreach之后回显用户名,则会显示多个用户名。
如果有人可以提供帮助,我会很感激。
答案 0 :(得分:0)
您是否尝试使用$username
以外的其他变量?因为您似乎已经使用此名称基于$lowername = strtolower($username);
行。
答案 1 :(得分:0)
根据您提供的示例代码以及$combined
的var_dump,我不确定为什么它不适合您。但也许你可以尝试这样的事情:
$inserts = array();
foreach ($combined as $username)
$inserts[] = "('','$grpid3','$username','$myuser','$grprights3','$grpactive3')";
$query = "INSERT INTO grprequest VALUES ". implode(", ", $inserts);
echo "query = $query"; // for debugging purposes, remove this once it is working
mysql_query($query) or die(mysql_error());
这将在一次调用数据库时执行所有插入操作。我在执行查询之前添加了echo
,以便您可以查看正在执行的确切查询。
您应该注意的一件事是,您的代码看起来很容易受到SQL注入攻击。您可以查看数百个地方以了解有关如何保护自己的更多信息,因此只需搜索它。我最喜欢的参考是Bobby Tables。
看起来您的表单也容易受到XSS攻击。您从数据库中选择数据并将其直接插入HTML,但您应首先对其进行清理(使用类似htmlspecialchars
的内容)。