【问题标题】:sql 'shows' array on some columnssql在某些列上“显示”数组
【发布时间】:2013-02-15 00:17:24
【问题描述】:

我有一些基本代码,它从表单中收集 chkbox 和单选按钮是/否答案等并存储在 mysql 中,但一些 mysql 提交工作(即在 sql 列中输入是或否)但有些只是显示在sql 列作为“数组” - 这是代码示例。 $repeat 显示为“数组”,其中 $inter 显示为是或否。 mysql 中的列在结构上是相同的,表单 HTML 是相同的语法,$_POST 数组是逗号分隔的,因为我也通过电子邮件发送值并且电子邮件正确显示答案 - 这很奇怪

<?php
$repeat = "";
foreach ($_POST['repeat'] as $key => $value) {
$repeat.= ",$value ";
}
$repeat = substr($repeat,1);

$inter = "";
foreach ($_POST['intermitant'] as $key => $value) {
$inter.= ",$value ";
}
$inter = substr($inter,1);

//other posts all looped though etc
//then the sql - log on etc

$sql="INSERT INTO faults (repeat_visit,intermitant) VALUES ('$repeat','$inter')";

这是 HTML - 我可以看到它没有什么奇怪的,我得到了你上面描述的 - 但是为什么一个工作,另一个不使用相同的代码,相同的方法应用于复选框和一些 wiork 其他将'数组'放入sql

<label>Repeat Visit:</label>
<input type="radio" name="repeat[]" value="Yes" />Yes
<input type="radio" name="repeat[]" value="No" />No

<label>Intermitant Fault:</label>
<input type="radio" name="intermitant[]" value="Yes" />Yes
<input type="radio" name="intermitant[]" value="No" />No   

【问题讨论】:

  • 请出示html表格
  • re $repeat='', .= and substr try $repeat=array();, $repeat[]=$value; and to stringify $repeat=implode(',', $repeat);

标签: mysql sql arrays post


【解决方案1】:

正如 popnoodles 所说,查看表单的 HTML 会有所帮助,但这看起来好像 $_POST['repeat'] 和 $_POST['intermitant'] 中的每个元素实际上都是一个数组,因此 foreach 的 $value () 正在返回“数组”

检查复选框数组是否只有一维,如果不是,是否一定是多维的?

如果是这样,可能需要递归函数或嵌套循环来内爆值

$repeat = "";
foreach ($_POST['repeat'] as $k => $v)
{
    foreach ($v as $kInner => $vInner)
    {
         $repeat .= ",$vInner ";
    }
}

【讨论】:

  • 这是 HTML - 我可以看到它没有什么奇怪的,我得到了你上面描述的 - 但为什么一个工作而另一个不使用相同的代码
猜你喜欢
  • 1970-01-01
  • 2014-07-23
  • 2019-03-11
  • 1970-01-01
  • 2019-05-31
  • 1970-01-01
  • 1970-01-01
  • 2016-02-01
  • 1970-01-01
相关资源
最近更新 更多