php - 向 MySQL 中插入数据,在字段中添加双引号

标签 php mysql insert

我有一个将数据导入 MySQL 表的脚本,在插入时,VARCHAR 和 TEXT 字段的开头和结尾都有双引号。我正在使用 addslashes 因为一些字段应该有单引号、双引号、逗号和分号。这是我的代码:

$csvfile = fopen($csv_file, 'r');
$theData = fgets($csvfile);
$i = 0;
$imports = array();

while (!feof($csvfile))
{
   $csv_data[] = fgets($csvfile, 1024);
   $data = explode(",", $csv_data[$i]);
   $insert_csv = array();

   $insert_csv['id'] = md5($EventID.$PerformerID);
   $insert_csv['EventID'] = addslashes($data[0]);
   $insert_csv['Event'] = addslashes($data[1]);
   $insert_csv['PerformerID'] = addslashes($data[2]);
   $insert_csv['Performer'] = addslashes($data[3]);
   $insert_csv['Venue'] = addslashes($data[4]);
   $insert_csv['VenueID'] = addslashes($data[5]);
   $insert_csv['VenueStreetAddress'] = addslashes($data[6]);
   $insert_csv['DateTime'] = addslashes($data[7]);
   $insert_csv['PCatID'] = addslashes($data[8]);
   $insert_csv['PCat'] = addslashes($data[9]);
   $insert_csv['CCatID'] = addslashes($data[10]);
   $insert_csv['CCat'] = addslashes($data[11]);
   $insert_csv['GCatID'] = addslashes($data[12]);
   $insert_csv['GCat'] = addslashes($data[13]);
   $insert_csv['City'] = addslashes($data[14]);
   $insert_csv['State'] = addslashes($data[15]);
   $insert_csv['StateID'] = addslashes($data[16]);
   $insert_csv['Country'] = addslashes($data[17]);
   $insert_csv['CountryID'] = addslashes($data[18]);
   $insert_csv['Zip'] = addslashes($data[19]);
   $insert_csv['TicketsYN'] = addslashes($data[20]);
   $insert_csv['IMAGEURL'] = addslashes($data[23]);

   $query = "INSERT IGNORE INTO table_name(`id`, `EventID`, `Event`, `PerformerID`, `Performer`, `Venue`, `VenueID`, `VenueStreetAddress`, `DateTime`, `PCatID`, `PCat`, `CCatID`, `CCat`, `GCatID`, `GCat`, `City`, `State`, `StateID`, `Country`, `CountryID`, `Zip`, `TicketsYN`, `IMAGEURL`)
VALUES('{$insert_csv['id']}','{$insert_csv['EventID']}','{$insert_csv['Event']}','{$insert_csv['PerformerID']}','{$insert_csv['Performer']}','{$insert_csv['Venue']}','{$insert_csv['VenueID']}','{$insert_csv['VenueStreetAddress']}','{$insert_csv['DateTime']}','{$insert_csv['PCatID']}','{$insert_csv['PCat']}','{$insert_csv['CCatID']}','{$insert_csv['CCat']}','{$insert_csv['GCatID']}','{$insert_csv['GCat']}','{$insert_csv['City']}','{$insert_csv['State']}','{$insert_csv['StateID']}','{$insert_csv['Country']}','{$insert_csv['CountryID']}','{$insert_csv['Zip']}','{$insert_csv['TicketsYN']}','{$insert_csv['IMAGEURL']}')";

   $n = mysql_query($query);
   if(!mysql_query($query)){
     die("error: ".mysql_error());
 }
   $i++;

是什么导致了双引号,插入行时如何删除它们?我还在查询的 VALUES 部分尝试了 stripslashes,但由于包含单引号、双引号或其他定界符的字段,它会导致错误。

最佳答案

您的 csv 文件可能包含用双引号分隔的字段。您可以使用 trim 函数从字段中删除双引号。例如:

$insert_csv['EventID'] = trim(addslashes($data[0]), '"');

以上代码将删除 $data[0] 字符串开头和结尾的双引号。

关于php - 向 MySQL 中插入数据,在字段中添加双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40072909/

相关文章:

mysql - 保持盈利记录的最佳方式,确保性能和可维护性

来自 Oracle 中 dblink 等待事件的 SQL*Net 消息

mysql - 插入数据库

php - 获取数据库行数据并设置变量

mysql - 我应该将整个站点放在一个数据库中还是拆分为两个数据库?

c++ - AVL树插入方法导致段错误

php - 使用 PhpStorm 在 CakePHP 中删除插件后出现 "Member has private access error"

PHP 正则表达式查找 __ ("STRING_TO_EXTRACT"中包含的字符串)

php - 选择具有两个条件的两个表

php - 如何在 php 中回显回显?