【问题标题】:Insert Multiple Rows in Mysql Using Foreach array使用 Foreach 数组在 Mysql 中插入多行
【发布时间】:2023-03-13 05:55:01
【问题描述】:

我正在尝试从允许多个复选框的表单中将多行插入到 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 之后回显用户名,则会显示多个用户名。

如果有人可以提供帮助,我将不胜感激。

【问题讨论】:

  • 今天的人看起来很累……哈哈
  • 请发布var_dump($combined);的输出
  • @Travesty3 array(2) { [0]=> string(9) "yoozpaper" [1]=> string(9) "bunchofus" }
  • 这是一段可怕的、可怕的代码。顺便说一句,你有任何错误吗? You have an error in your query near... 之类的东西?

标签: php mysql arrays for-loop foreach


【解决方案1】:

根据您提供的示例代码和$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 的东西)。

【讨论】:

  • 最后添加了第一个和另一个的两个结果。至少它增加了多个。我会试着从这里弄清楚。谢谢。 query = INSERT INTO grprequest VALUES ('','38','yoozpaper','theSteveDowling','Group','Yes') 查询 = INSERT INTO grprequest VALUES ('','38','yoozpaper','theSteveDowling ','Group','Yes'), ('','38','bunchofus','theSteveDowling','Group','Yes')
【解决方案2】:

您是否尝试过使用除$username 之外的其他变量?因为您似乎已经根据$lowername = strtolower($username); 行使用了此名称。

【讨论】:

    猜你喜欢
    • 2010-12-21
    • 1970-01-01
    • 2012-01-24
    • 2023-03-30
    • 2019-07-15
    • 2012-06-19
    • 2011-05-26
    • 1970-01-01
    • 2015-06-16
    相关资源
    最近更新 更多