【问题标题】:How to get multi-line data from textarea to mysql如何从textarea获取多行数据到mysql
【发布时间】:2018-05-21 21:13:22
【问题描述】:

我正在尝试将 excel 中的信息粘贴到 textarea 中,然后将其拆分为每个字段,但是我还想保留空白字段,因为并非所有字段都会始终包含数据。

粘贴的数据是13 columns (with some blank),每个都用制表符分隔,然后换行。总行数每天从

开始变化
1 - 100 EG:
Dr Pete    1234567890    anthony    woods    11/11/11    planned visit    12/12/12   dr roger    AMH    13/01/13   planned discharge    usual place of residence    "would be blank"   

Dr Pete    1234567890    anthony    woods    11/11/11    planned visit    12/12/12   dr roger    AMH    "would be blank"   "would be blank"    "would be blank"    "would be blank" 

html 表单:

<form name="form1" method="post" action="insert.php">
<textarea name="area"></textarea>
<input type="submit" name="submit" value="submit">
</form>

php insert.php:

$area = preg_split("[\t]", "$textarea");

print_r($area);

$sql = "INSERT INTO admissions (registered_gp, nhs_no, forename, surname, dob, admission_method, admitted_on, consultant, ward, discharge_date, 
discharge_reason, discharged_to, date_of_death)
VALUES ('$area')";

到目前为止,我得到了以下错误“列数与第 1 行的值计数不匹配” - 我认为这是因为我列出了 13 个字段但只有 1 个值。我将如何为每个字段(包括空白)提供足够的值。

我会假设我需要如何分隔每一行数据,然后分隔每一列数据并给它自己的值名称?

【问题讨论】:

    标签: php html mysql


    【解决方案1】:

    您可以像这样更改代码并尝试

    $var = 'Dr Pete    1234567890    anthony    woods    11/11/11    planned visit    12/12/12   dr roger    AMH    13/01/13    planned discharge    usual place of residence    "would be blank"';
    
            $area = explode("    ", $var);
    
            $registered_gp = $area[0] ;
            $nhs_no = $area[1] ;
            $forename = $area[2] ;
            $surname = $area[3] ;
            $dob = $area[4] ;
            $admission_method = $area[5] ;
            $admitted_on = $area[6] ;
            $consultant = $area[7] ;
            $ward  = $area[8] ;
            $discharge_date = $area[9] ;
            $discharge_reason = $area[10] ;
            $discharged_to = $area[11] ;
            $date_of_death = $area[12] ;
    
    
            $sql = mysql_query("INSERT INTO admissions (registered_gp, nhs_no, forename, surname, dob, admission_method, admitted_on, consultant, ward, discharge_date, 
    discharge_reason, discharged_to, date_of_death)
    VALUES ('$registered_gp','$nhs_no','$forename','$surname','$dob','$admission_method','$admitted_on','$consultant','$ward','$discharge_date','$discharge_reason','$discharged_to','$date_of_death')");
    

    【讨论】:

    • 您好,谢谢您的回答,但是如果它从文本区域而不是预设数据中提取数据,这会起作用吗?
    • 是的,它会从 textarea 中提取数据,请确保在每个信息之间用制表符分隔,例如 $var = 'Dr Pete 1234567890 anthony woods 11/11/11 计划访问 12/12/12罗杰博士 AMH “将是空白的”“将是空白的”“将是空白的”“将是空白的”' ;
    • 只要我把这段代码放到页面上,就会得到 http 错误 500。
    • 我已经尝试使用你上面的代码,但我又卡住了。 $var = #### 位我根本不明白,似乎不起作用。我正在使用$area1 = preg_replace("[\t]", ',', $textarea); & $area = explode(",", $area1); 然后将数据完美地拆分为一个数组,直到我输入多行数据,然后最后的空白字段被下一行的第一个使用的字段替换并成为数组[13] 而不是回到 [0] ???有任何想法吗?我在网上搜索了 8 个小时,一无所获。
    【解决方案2】:

    在执行 $sql=...之前用逗号更改选项卡

    $area = str_replace("[\t]", "','", $area);
    

    【讨论】:

    • 这是和上面注释的代码一起使用还是我的原始代码?
    • 应该是:$area = str_replace("[\t]", ",", $textarea);
    • 在 php 文件中,在 $sql 字符串中插入 var $area 之前。 php insert.php:$area = str_replace("[\t]", "','", $area); $sql = "INSERT INTO admissions (registered_gp, nhs_no, forename, surname, dob, admission_method, admitted_on, consultant, ward, discharge_date, discharge_reason, discharged_to, date_of_death) VALUES ('$area')";
    猜你喜欢
    • 2019-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    相关资源
    最近更新 更多