【问题标题】:Save textfield input as comma separated list in php将文本字段输入保存为 php 中的逗号分隔列表
【发布时间】:2013-12-14 19:16:02
【问题描述】:

我想获取一个文本字段输入(作业)并将其以逗号分隔列表存储在我的数据库中。这是我尝试过的:

public function __saveNewJob($newJob,$jobscopeChosen) {
    $jobId = $this->__getScopeId($jobscopeChosen);
    $jobList = $this->__getJoblist($jobId);

    $jobList_comma = explode(",",array_filter($joblist));
    $jobList_array = array_push($jobList_comma,$newJob);
    $jobList_save = implode(",",$jobList_array);

    $query = "UPDATE xxxx SET jobs='".$jobList_save."' WHERE id='$jobId'";
    $result = mysql_query($query) OR die(mysql_error());

$newJob 是我要保存的文本字段中的字符串。 $jobscopeChosen 是来自选择框的值。

数据库中名为jobs的表应该是Designer, Producer, Administration等。

我的想法是获取逗号分隔的列表,将其分解为数组,推送新值并再次将其分解为字符串。

我的数据库在我的表中显示Array。我很绝望。我究竟做错了什么?有什么想法吗?

【问题讨论】:

  • $jobList_comma 是一个数组。 Explode 返回一个数组。
  • echo "$jobList_save" 确认是字符串还是数组,再存入db。
  • 您似乎正在尝试在数组上使用explode()——它需要一个字符串,而不是一个数组。我建议启用错误报告,看看到底出了什么问题。

标签: php arrays database explode implode


【解决方案1】:

当 PHP 具有完全可以接受的内置语言结构(如 [])时,我个人不喜欢使用 array_push。

你需要内爆正确的数组,所以试试这个:

$jobList_comma = explode(",", array_filter($joblist));
$jobList_comma[] = $newJob;
$jobList_save = implode(",", $jobList_comma);

如果这对您不起作用,$joblist 必须是一个数组(explode 需要)而不是一个字符串,您应该对其执行 var_dump 以检查其类型和内容,然后您可以找出问题所在与它以及如何解决它。例如,如果 getJobList() 从数据库中返回一个数组,则不需要分解它,但只需要过滤掉所需的数据并将其分解以保存。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多