当我使用fputcsv写一行到打开的文件句柄时,PHP会将一个封闭的字符添加到它认为需要的任何列,但是会留下没有这些外壳的其他列.
例如,您最终可能会得到这样的一行
11,"Bob ",Jenkins,"200 main st. USA ",etc
Run Code Online (Sandbox Code Playgroud)
如果没有将虚假空间附加到每个字段的末尾,是否有任何方法可以强制fputcsv始终用外壳包含列(默认为")"字符?
当我内爆我的数组时,我得到一个如下所示的列表:
qwerty, QTPQ, FRQO
Run Code Online (Sandbox Code Playgroud)
我需要添加单引号,如下所示:
'qwerty', 'QTPQ', 'FRQO'
Run Code Online (Sandbox Code Playgroud)
可以使用PHP完成吗?
我需要使用PHP将所有字符串和数字用双引号放在CSV文件中.
如何在双引号内的所有数据中从PHP创建CSV文件?
我正在使用此代码生成CSV - 我正在使用codeigniter框架
$array = array(
array(
(string)'XXX XX XX',
(string)'3',
(string)'68878353',
(string)'',
(string)'xxxx@xxxx.xxx.xx',
),
);
$this->load->helper('csv');
array_to_csv($array, 'blueform.csv');
Run Code Online (Sandbox Code Playgroud)
输出我得到:
"XXX XX XX",3,68878353,,xxxx@xxxx.xxx.xx
Run Code Online (Sandbox Code Playgroud)
预期产出:
"XXX XX XX","3","68878353","","xxxx@xxxx.xxx.xx"
Run Code Online (Sandbox Code Playgroud)
array_to_csv的代码
if (!function_exists('array_to_csv')) {
function array_to_csv($array, $download = "") {
if ($download != "") {
header('Content-Type: application/csv');
header('Content-Disposition: attachement; filename="' . $download . '"');
}
ob_start();
$f = fopen('php://output', 'w') or show_error("Can't open php://output");
$n = 0;
foreach ($array as $line) {
$n++;
if (!fputcsv($f, $line)) {
show_error("Can't write line $n: …Run Code Online (Sandbox Code Playgroud) 我不能让这个工作.我现在已经花了很多时间.
这有效:
$mysqli = new mysqli("localhost", "root", "root", "db");
if(!$mysqli || $mysqli->connect_errno)
{
return;
}
$query_str= "SELECT name FROM table WHERE city IN ('Nashville','Knoxville')";
$query_prepared = $mysqli->stmt_init();
if($query_prepared && $query_prepared->prepare($query_str))
{
$query_prepared->execute();
Run Code Online (Sandbox Code Playgroud)
但是我不能让它与这样的bind_param一起工作:
$query_str= "SELECT name FROM table WHERE city IN (?)";
$query_prepared = $mysqli->stmt_init();
if($query_prepared && $query_prepared->prepare($query_str))
{
$cities= explode(",", $_GET['cities']);
$str_get_cities= "'".implode("','", $get_cities)."'"; // This equals 'Nashville','Knoxville'
$query_prepared->bind_param("s", $cities);
$query_prepared->execute();
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我也试过call_user_func_array,但似乎无法使语法正确.任何帮助将不胜感激!
编辑:我已经严格尝试了moskito-x的建议和大量的例子列在这里以及其他在SO和随机网站上,没有任何作品.我认为问题可能是PHP 5.4,这就是我的MAMP现在设置的.