繁体   English   中英

使用foreach循环以数组的形式将数据保存到mysql数据库

[英]save data in form of arrays to mysql database using a foreach loop

我有一个使用php提交多个值的表单。 代码如下:

    echo "<form action='?ud=".$ud."' method='post'>Name: <input type='text' name='fname' />";
$resultw = mysql_query("SELECT * FROM options where userid='$ud' ORDER BY priority ASC");

while($row = mysql_fetch_array($resultw))
  {  
  echo "
 <input type='hidden' name='widgetid[]' value='".$row['widgetid']."' />
  <span id='".$row['widgetid']."' style='color:white;font-size:13px;'>".$row['items'] .    "</span><br></div><div style='' class='portlet_content'>
   Enabled <input title='Enabled/Disabled' type='checkbox' value='enable[]' name='enable[]' ".$checked." id='checkbox".$row['id']."' />  
   Height <input title='set height' name='height[]' value='".$row['height']."' type='text' name='textfield' id='textfield".$row['id']."' />
 ";
  } 

  echo '<input type="submit" /></form>';?> 

正如你可以看到它的一个循环,它从db获取值并回显一个表单。 我让它尽可能简单,它有更多的输入框,但我删除了它们并删除了样式,使其更易于阅读。 当我点击提交时,我希望能够通过循环将所有这些值更新到数据库。 我尝试了foreach并且努力了。 有什么建议么

首先,您的代码存在安全性错误,因为您直接将变量放入SQL查询中。 这允许SQL注入。 相反,您应该在插入查询之前将变量$ ud放在mysql_real_escape_string中,或者更好的是,使用MySQLi / PDO和预处理语句。

您是否检查过表单是否正确回显到页面上? 查看源(或使用Firefox和Firebug)以仔细检查它是否已正确插入。

然后,您将需要一个在收到POST请求时启动的代码块。 该代码将为每个变量返回一个数组,例如

 $widget_ids = $_POST['widgetid']; #this will be an array
 $enable = $_POST['enable'];
 $height = $_POST['height'];

您可以为每个POSTed变量执行此操作,然后循环遍历窗口小部件ID,为每个变量查询执行更新查询,例如

$i = -1;
foreach($widget_ids as $widget_id) {
      $row_enable = $enable[++$i];
      $row_height = $height[$i];
      //DO THIS FOR THE REST AND THEN YOUR UPDATE QUERY
}

只是为了迂腐,你的HTML也有点混乱和不正确。 对于表单,我会为每个标签使用标签元素,不要对新行使用br。 你也有一个没有开头的div,然后是没有结尾的div。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM