【问题标题】:Only getting the first character of the array element只获取数组元素的第一个字符
【发布时间】:2019-03-26 02:06:41
【问题描述】:

谁能帮我弄清楚为什么我在插入数据库时​​只得到数组元素的第一个字符。

我的数据来自复选框,然后提交时数据如下所示:

array ( 0 => 'Water Sealed', 1 => 'Open Pit', 2 => 'None', )   //$toilet_arr

这是我的代码:

if (count($toilet_arr)) {
   foreach($toilet_arr as $row):
   $data = array("hof_id"=>$last_id,"toilet_type"=>$row['toiletType']);
   $this->db->insert('toilet_tbl',$data);
   endforeach;
}

【问题讨论】:

  • 不清楚的问题。
  • 这可能是针对字符串的 0 索引的结果。 echo "foo"[0];f
  • 当我 print_r() 显示完整字符串的数组时,但是当我成功插入数据库时​​,第一个字符只存储在表中。 W 仅用于应该作为水的东西。
  • 也许你的 $toilet_arr 中的 var_export 和你的 Toilet_tbl 架构会有所帮助。
  • 假设$toilet_arr 有正确的数据,请更新您的问题以包含来自查询SHOW CREATE TABLE toilet_tbl 的结果

标签: php arrays codeigniter


【解决方案1】:

您的hof_id=>$last_id 已修复。如果它是数据库中的主键或唯一键,则它需要随着每次迭代而递增。

【讨论】:

  • 从数组中捕获所有数据没有问题。问题是只有每个数据元素的第一个字符被保存在表中。 (W 仅适用于 晶圆
【解决方案2】:

从您的数组中,foreach 循环应如下所示

$toilet_arr = array ( 0 => 'Water Sealed', 1 => 'Open Pit', 2 => 'None' );

if (count($toilet_arr)) {
   foreach($toilet_arr as $row) {
      $data = array("hof_id"=>$last_id,"toilet_type"=>$row);
      $this->db->insert('toilet_tbl',$data);
    }
}

如果问题仍然存在,这应该插入值,检查数据库中列toilet_type 的长度。您需要为列toilet_type设置varchar(250)

【讨论】:

  • 你拯救了我的一天。非常感谢。
  • @Bergin 错误可能与数据库有关。由于数据正在插入,但只有第一个字符。正如 OP 所说,数组在插入之前返回完整数据,尽管它只插入第一个字符,因此数据库长度的可能性很高
  • @LeenaPatel 列字符长度也是我所逃避的。如果$toilet_arr 是那个结构,仍然不知道W 是如何插入的。由于 php 应该显示 unknown index "toiletType" 错误,并插入 NULL
  • @fyrye 是的,这很奇怪。但可能是 OP 错过输入或忘记更新问题,因为他正在获取数据库中的数据。
猜你喜欢
  • 2013-06-21
  • 1970-01-01
  • 2020-04-07
  • 2021-04-07
  • 1970-01-01
  • 1970-01-01
  • 2010-12-27
  • 2018-12-31
相关资源
最近更新 更多