PHP-将字符串添加到变量(数组)CSV-->;MySQL

PHP-将字符串添加到变量(数组)CSV-->;MySQL,php,mysql,csv,mysqli,csvtoarray,Php,Mysql,Csv,Mysqli,Csvtoarray,我有一个困扰我的问题,我无法将从CSV文件中逐渐加载的字符串添加到数组中(通过while循环),该数组在写入数据库后将被加载 代码运行时,它回显了它已写入数据库的事实,但当我删除它写入数据库的字符串时,实际上什么也没有发生 语法应该是 $variable='string'$CSV值; 在这种情况下,它不会写入数据库,但在以下情况下会写入: $variable=$csvValue 代码如下: <?php // Script to insert data from a CSV-file wit

我有一个困扰我的问题,我无法将从CSV文件中逐渐加载的字符串添加到数组中(通过while循环),该数组在写入数据库后将被加载

代码运行时,它回显了它已写入数据库的事实,但当我删除它写入数据库的字符串时,实际上什么也没有发生

语法应该是 $variable='string'$CSV值; 在这种情况下,它不会写入数据库,但在以下情况下会写入: $variable=$csvValue

代码如下:

<?php
// Script to insert data from a CSV-file with AD information in it to a MySQL database.

// Connect to the database 
$connect = mysqli_connect("localhost","root","password","dbname"); 

if(!$connect){
   die('Could not <span id="IL_AD1" class="IL_AD">
    connect to</span> MySQL: ' . mysql_error());
}

// Charset
mysqli_query($connect, "SET NAMES 'utf8'");

// File path
define('CSV_PATH','/home/administrator/Desktop/'); 

$csvName = CSV_PATH . "AnsattInfo.csv"; // Name of CSV-file
$csvfile = fopen($csvName, 'r');
$theData = fgets($csvfile);
$i = 0;

while(!feof($csvfile)){

    $csv_data[] = fgets($csvfile, 2048);
    $csv_array = explode(",", $csv_data[$i]);
    $insert_csv = array();
    $insert_csv['sAMAccountName'] = $csv_array[0];
    $insert_csv['displayName'] = $csv_array[1];
    $insert_csv['employeeNumber'] = $csv_array[2];
    $insert_csv['mail'] = $csv_array[3];
    $insert_csv['company'] = $csv_array[4];
    $footer = str_replace(' ', '_', $insert_csv['company']);
    //$footer = '@' . str_replace(' ', '_', $insert_csv['company']);

    $query = "INSERT INTO playsms_tblUserTest (status, username, enable_webservices, webservices_ip, name, mobile, email, footer, country, datetime_timezone, language_module, fwd_to_mobile, send_as_unicode)
        VALUES(
            3,
            ".$insert_csv['sAMAccountName'].",
            1,
            '*.*.*.*',
            ".$insert_csv['displayName'].",
            ".$insert_csv['employeeNumber'].",
            ".$insert_csv['mail'].",
            ".$footer.",
            137,
            '+0100',
            'nb_NO',
            1,
            1         
    ) ON DUPLICATE KEY
        UPDATE name = $insert_csv[displayName], mobile = $insert_csv[employeeNumber], email = $insert_csv[mail], footer = $footer";

   mysqli_query($connect, $query);

   $i++;
}

fclose($csvfile);

echo "CSV successfully imported to User-table! \n";

mysqli_close($connect); // closing connection  
?>
这不会给出任何语法错误,但实际上不会写入数据库

这里有人对解决方案有什么建议吗


欢迎提供帮助。

如果数据库中的字段
页脚
属于某种“字符串类型”,则还必须用字符串填充:

/* ... */
            ".$insert_csv['employeeNumber'].",
            ".$insert_csv['mail'].",
            '".$footer."',
            137,
            '+0100',
            'nb_NO',
            1,
            1         
    ) ON DUPLICATE KEY
        UPDATE name = $insert_csv[displayName], mobile = $insert_csv[employeeNumber], email = $insert_csv[mail], footer = '$footer'";
/* ... */
要在mysql查询中将其声明为字符串,必须将其置于引号之间,如上图所示,并使用
$footer

我认为您在查询中多次遇到相同的错误: 例如,我想,
$insert\u csv['mail']
也将是一个字符串


提示:如果您使用了某种错误处理,那么您会看到mysql出现了一些错误(因为我使用的是
pdo
我真的不知道在
mysqli
中是如何工作的)。

这可能是我的愚蠢,您是否尝试过在使用@dot replace时注释管理页脚的另一行?您是否尝试过调试一点以响应示例$footer或$query?你看到了什么?当我在页脚的@version上回显时,我得到如下回显:@“@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@所以我想这可能与没有公司名称的用户有关,这可能是个问题?我不知道为什么,但在mysql查询中,字符串仍然应该用引号括起来。我的第二个猜测是,如果一个字符串被识别,php/mysqli会自动为您做引号-但它不会将
@value
识别为字符串,因为以
@
开头的单词在mysql中被视为变量(mysql变量)。考虑到这种低租金,我也尝试过使用随机字符串,例如,我尝试了$footer='asd'。str_替换(“,”,$insert_csv[“公司])@robikar您能回显
$query
变量并发布您的mysql字符串的最终外观吗?例如,当尝试在终端中添加引号时,我在终端中遇到一个语法错误,该错误表示存在意外的“”(T_封装的_和_空格),需要标识符(T_字符串),或变量(T_变量)或数字(T_NUM_字符串)。@robikar,然后在查询字符串中出现了一些解析错误。但这并不意味着,当您消除这些解析错误时,它就不起作用了:)您碰巧看到了这些错误吗?我已经链接了整个脚本,唯一编辑掉的是db连接信息和$password变量,该变量目前只将用户名作为密码复制,因为该服务仍处于测试阶段,我不担心从广告中获取密码。如果您有任何关于如何“解密”的线索密码向上指向AD,以检查密码是否正确。(我正在使用的是ubuntu上的服务,而广告服务器显然是基于Windows的)我很感谢你的帮助,但现在这不是一个优先权。
/* ... */
            ".$insert_csv['employeeNumber'].",
            ".$insert_csv['mail'].",
            '".$footer."',
            137,
            '+0100',
            'nb_NO',
            1,
            1         
    ) ON DUPLICATE KEY
        UPDATE name = $insert_csv[displayName], mobile = $insert_csv[employeeNumber], email = $insert_csv[mail], footer = '$footer'";
/* ... */