Php 创建新表时出现MySQL语法错误

Php 创建新表时出现MySQL语法错误,php,mysql,Php,Mysql,我对下面代码中的查询没有问题。但是第二个代码抛出了错误 您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以获取第1行“”附近要使用的正确语法 工作代码: 生成代码时出错 <?php // GENERATE TABLE FROM FIRST LINE OF CSV FILE $inputFile = 'google.csv'; $tableName = 'google_csv'; $fh = fopen($inputFile, 'r'); $contents = fr

我对下面代码中的查询没有问题。但是第二个代码抛出了错误

您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以获取第1行“”附近要使用的正确语法

工作代码:


生成代码时出错

<?php

// GENERATE TABLE FROM FIRST LINE OF CSV FILE

$inputFile = 'google.csv';
$tableName = 'google_csv';

$fh = fopen($inputFile, 'r');
$contents = fread($fh, 5120); // 5KB
fclose($fh);

$fileLines = explode("\n", $contents);

$fieldList = explode(',', $fileLines[0]);

$lastField=count($fieldList)-1;

echo "Total Fields :".count($fieldList)."<br>";

echo "Last Field :".$lastField."<br>";

$result ="CREATE TABLE $tableName(";

for($i = 0; $i < count($fieldList); $i++)
{
    if(preg_match('/[1-9]/', $fieldList[$i]))
    {

    if ($i==$lastField)
    {$result .=str_replace(array(" ",'-'),"_",$fieldList[$i]). ' int(11)';}
    else
    {$result .=str_replace(array(" ",'-'),"_",$fieldList[$i]). ' int(11),';}

    }
    else
    {

    if($i==$lastField)

    {$result .=str_replace(array(" ",'-'),"_",$fieldList[$i]). ' varchar(80)';}
    else
    {$result .=str_replace(array(" ",'-'),"_",$fieldList[$i]). ' varchar(80),';}

    }
}

$result .=")";

if ($result) {echo $result."<br>".$i."<br>";} else {Echo "Some Problem!";}

mysql_connect("localhost", "","") or die(mysql_error());
mysql_select_db("") or die(mysql_error());

mysql_query($result);

echo mysql_error();

?>

我在第一个代码中使用了这里的
$result
输出,它工作得非常好!我在第二个代码中哪里出错了

echo给出的$result

创建表google_csv(80)、Given_Name varchar(80)、Additional_Name varchar(80)、Family Name varchar(80)、Yomi_Name varchar(80)、Given_Name_Yomi varchar(80)、Additional_Name_Yomi varchar(80)、Family_Name_Yomi varchar(80)、Name前缀varchar(80)、Name后缀varchar(80)、缩写varchar(80)、昵称varchar(80)、短名varchar(80),婚前姓名varchar(80),生日varchar(80),性别varchar(80),地点varchar(80),账单信息varchar(80),目录服务器varchar(80),里程varchar(80),职业varchar(80),爱好varchar(80),敏感度varchar(80),优先级varchar(80),主题varchar(80),注释varchar(80),组成员varchar(80),电子邮件(1)Type int(11),电子邮件1值int(11),电子邮件2类型int(11),电子邮件2值int(11),电话1类型int(11),电话1值int(11),电话1值int(11),电话2类型int(11),电话2值int(11),电话3值int(11),电话3值int(11),地址1格式int(11),地址int(11)、地址1街道国际(11)、地址1城市国际(11)、地址1邮政信箱国际(11)、地址1地区国际(11)、地址1邮政编码国际(11)、地址1国家国际(11)、地址1扩展地址国际(11)、网站类型国际(11)、网站价值国际(11))

看起来这里一切都很好!但是

ÿþ

ÿþ是特殊字符(0xFE,0xFF)。我认为OP不希望他们以colum的名义,如果是的话,应该用

`ÿþName`

请不要将
mysql.*
函数用于新代码。它们不再得到维护,社区已开始恢复。看到了吗?相反,你应该学习并使用或。如果你不能决定,试试看。如果你想学习,。你是否能够
echo$result发送到查询之前?如果第一段代码正常工作,则更有可能是有人在编写PHP代码时疯了,而创建表查询并不是您想象的那样。$result echo是创建表google_csv(名称varchar(80)、给定名称varchar(80)、附加名称varchar(80),Family_Name…@user1407430您能通过编辑将整个结果弹出到问题中吗?语法错误可能在问题中的任何地方,伙计。当然,很抱歉……在一分钟内……我注意到当我编辑问题进行格式化时,OP说它是工作代码?$result回显创建表google_csv(ÿþName varchar(80),给定名称varchar(80),附加名称varchar(80),Family_Name…@user1407430从一个很好的列名练习中,可以很容易地键入列名。正如我前面所说,这是我在查看您的问题时看到的第一件事。我建议尝试重命名该字段,您可能会发现您的其余代码已经就绪。@rkosegi这是由代码…重命名不会成为一项艰巨的任务吗?ÿþ-是UTF-8 BOM。在某些情况下,它作为前两个字节添加到UTF8文件中。
`ÿþName`