在使用csv文件-PHP创建mysql表时添加背景标记

在使用csv文件-PHP创建mysql表时添加背景标记,php,mysql,csv,backticks,Php,Mysql,Csv,Backticks,我有一个php代码,它将使用csv文件创建mysql数据库的表。但是,mysql没有读取某些列标题。mysql读取查询的唯一时间是我添加反勾号(`)时。你能帮我在我的查询中的什么地方加上反勾吗( 这是我的密码: $file = 'C:\Users\user\Desktop\Sample CSV Files\672VER.csv'; $table = '`672ver`'; // get structure from csv and insert db ini_set('auto_dete

我有一个php代码,它将使用csv文件创建mysql数据库的表。但是,mysql没有读取某些列标题。mysql读取查询的唯一时间是我添加反勾号(`)时。你能帮我在我的查询中的什么地方加上反勾吗(

这是我的密码:

   $file = 'C:\Users\user\Desktop\Sample CSV
Files\672VER.csv';
$table = '`672ver`';

// get structure from csv and insert db
ini_set('auto_detect_line_endings',TRUE);
$handle = fopen($file,'r');
// first row, structure
 if ( ($data = fgetcsv($handle) ) === FALSE ) {
echo "Cannot read from csv $file";die();
}
$fields = array();
$field_count = 0;
for($i=0;$i<count($data); $i++) {
$f = strtolower(trim($data[$i]));
if ($f) {
// normalize the field name, strip to 20 chars if too long
$f = substr(preg_replace ('/[^0-9a-z]/', '_', $f), 0, 100);
$field_count++;
$fields[] = $f.' VARCHAR(500)';
}
}

$sqlcreate = "CREATE TABLE $table (" . implode(', ', $fields)  . ')';


echo $sqlcreate;
$file='C:\Users\user\Desktop\Sample CSV
文件\672VER.csv';
$table=''672ver`';
//从csv获取结构并插入数据库
ini设置(“自动检测线结束”,TRUE);
$handle=fopen($file,'r');
//第一排,结构
if(($data=fgetcsv($handle))==FALSE){
echo“无法从csv$文件中读取”;die();
}
$fields=array();
$field\u count=0;
对于($i=0;$i我想你可以

$sqlcreate = "CREATE TABLE $table (`" . implode("`, `", $fields)  . "`)";

如果将字段名用反勾号括起来,这将阻止它尝试将某些列名解释为保留字

$fields[] = '`'.$f.'` VARCHAR(500)';

按以下方式更改循环的最后一行:

$fields[] = '`' . $f . '` VARCHAR(500)';

我希望它能正常工作,

对不起……mysql没有读取我的查询,因为逗号(,)尚未阅读:CIT说需要逗号或右括号,这也会在字段类型定义周围加上“a”。这一点很好-在得出错误结论之前,应该正确检查代码以了解发生了什么:D谢谢!)如果你不介意我问…列名作为保留字是什么意思?你能给我举个例子吗?列名,如
顺序
选择
…基本上,SQL语句中通常包含的任何单词都会得到不同的处理。好的。当我使用backticks:)谢谢你的提示。:)