Php fputcsv函数和表单

Php fputcsv函数和表单,php,Php,我正在尝试使用fputcsv函数处理表单提交值到.csv文件。我没有收到任何错误,也没有表单值保存到data.csv文件。有人能看出我做错了什么吗 表格 <label for="location">How many Locations?</label> <input id="location" name="loc" /><br /> <select id="when" name="day"> <option value

我正在尝试使用
fputcsv
函数处理表单提交值到.csv文件。我没有收到任何错误,也没有表单值保存到data.csv文件。有人能看出我做错了什么吗

表格

<label for="location">How many Locations?</label> 
<input id="location" name="loc" /><br />

<select id="when" name="day">
    <option value="Sunday">Sunday</option>
    <option value="Monday">Monday</option>
    <option value="Tuesday">Tuesday</option>
    <option value="Wednesday">Wednesday</option>
    <option value="Thursday">Thursday</option>
    <option value="Friday">Friday</option>
    <option value="Saturday">Saturday</option>
</select>
<input type="checkbox" id="osecom" name="osecom" value="Yes" /> 
<label for="osecom">Online</label>

<input type="checkbox" id="item1yes" name="item1yes" value="Yes" /> Yes
<input type="checkbox" id="item1no" name="item1no" value="No" /> No<br />
<label for="chkitem1">mobile</label> 

<input type="checkbox" id="item2yes" name="item2yes" value="Yes" /> Yes
<input type="checkbox" id="item2no" name="item2no" value="No" /> No<br />
<label for="chkitem2">policy? </label> 

<input type="submit" title="Submit Form" value="" />
不要使用内爆(“,”,$\u POST)

$\u POST是数组,fputcsv()希望第二个参数是数组而不是字符串

最好使用以下代码:

if(isset($_POST['submit'])) {
    $data = array_values($_POST); // get only values
    if( $fp = fopen('data.csv', 'a') ){
        fputcsv($fp, $data);
    }
    fclose($fp);
}
请注意,通过仅保存值,您在读取$\u POST开关中的csv if参数时会遇到问题,因此最好使用标题保存第一行:

if(isset($_POST['submit'])) {
    $data = array_values($_POST); // get only values
    $headers = array_keys($_POST); // keys are headers 
    if( $fp = fopen('data.csv', 'a') ){
        fputcsv($fp, $headers);
        fputcsv($fp, $data);
    }
    fclose($fp);
}
编辑:
我注意到,在您的表单中,您正在使用复选框,其中单选按钮更适合字段“mobile?”和“policy?”

var\u dump($\u POST)
,这可能有助于您进行调试。我也注意到了这一点。。。我只是在关注一个图形设计,他们想要复选框:/感谢您的帮助,我现在就要尝试一下。问题:只有inputbox类型似乎在数据周围有引号,而其他类型没有。如何删除引号以使数据更干净这是CSV格式的工作原理,如果字段不包含特定于CSV的字符,如“,(或;)和空格,则不会将其包装在“”中以减少文件长度,但如果是这样,则会将其包装在“”中以保护CSV数据的完整性
if(isset($_POST['submit'])) {
    $data = array_values($_POST); // get only values
    $headers = array_keys($_POST); // keys are headers 
    if( $fp = fopen('data.csv', 'a') ){
        fputcsv($fp, $headers);
        fputcsv($fp, $data);
    }
    fclose($fp);
}