我在下面的代码中查询没有问题。但第二个代码是抛出错误创建新表时MySQL语法错误
您的SQL语法有错误;检查对应于你的MySQL服务器版本使用附近的“”在1号线
工作代码正确的语法手册:
<?php
mysql_connect("localhost", "","") or die(mysql_error());
mysql_select_db("") or die(mysql_error());
$result =" CREATE TABLE google_csv(
ÿþName varchar(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_Prefix varchar(80),
Name_Suffix varchar(80),
Initials varchar(80),
Nickname varchar(80),
Short_Name varchar(80),
Maiden_Name varchar(80),
Birthday varchar(80),
Gender varchar(80),
Location varchar(80),
Billing_Information varchar(80),
Directory_Server varchar(80),
Mileage varchar(80),
Occupation varchar(80),
Hobby varchar(80),
Sensitivity varchar(80),
Priority varchar(80),
Subject varchar(80),
Notes varchar(80),
Group_Membership varchar(80),
E_mail_1___Type int(11),
E_mail_1___Value int(11),
E_mail_2___Type int(11),
E_mail_2___Value int(11),
Phone_1___Type int(11),
Phone_1___Value int(11),
Phone_2___Type int(11),
Phone_2___Value int(11),
Phone_3___Type int(11),
Phone_3___Value int(11),
Address_1___Type int(11),
Address_1___Formatted int(11),
Address_1___Street int(11),
Address_1___City int(11),
Address_1___PO_Box int(11),
Address_1___Region int(11),
Address_1___Postal_Code int(11),
Address_1___Country int(11),
Address_1___Extended_Address int(11),
Website_1___Type int(11),
Website_1___Value int(11)
)";
echo $result;
mysql_query($result);
echo mysql_error();
?>
错误产生的代码;
<?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
,它工作得很好!我在第二个代码中错了什么地方?
的$结果回波给出
CREATE TABLE google_csv(ÿþNameVARCHAR(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_Prefix varchar(80),Name_Suffix varchar(80),Initials varchar(80),Nickname varchar(80),Short_Name varchar(80),Maiden_Name varchar 80),生成varchar(80),性别varchar(80),位置varchar(80),Billing_Information varchar(80),Directory_Server varchar(80),Mileage varchar(80),占据varchar(80),Hobby varchar(80) ,Sensitivity varchar(80),Priority varchar(80),Subject varchar(80),Notes varchar(80),Group_Membership varchar(80),E_mail_1_ 类型为INT(11),E_mail_1 _Value INT(11),E_mail_2_ int类型(11),E_mail_2 _Value INT(11),Phone_1_ int类型(11),PHONE_1 _Value INT(11),Phone_2_ 类型INT(11),Phone_2 _Value INT(11),Phone_3_ int类型(11),Phone_3 _Value INT(11),Address_1_ int类型(11),ADDRESS_1 _Formatted INT(11),Address_1_ 街INT( 11),Address_1 _City int(11),Address_1_ PO_Box int(11),Address_1 _Region int(11),Address_1_ Postal_Code int(11),Address_1 _Country int(11),Address_1_ 个Extended_Address INT(11),WEBSITE_1 _Type INT(11),WEBSITE_1 ___值INT(11))
看起来一切都很好在这里!但后来......
请封闭,不使用'mysql_ *'功能的新代码。他们不再被维护,社区已经开始[弃用流程](http://news.php.net/php.internals/53799)。看到[**红框**](http://php.net/mysql-connect)?相反,您应该了解[准备好的陈述](http://en.wikipedia.org/wiki/Prepared_statement)并使用[PDO](http://php.net/pdo)或[MySQLi](http:// php.net/mysqli)。如果你不能决定,试试[这篇文章](http://php.net/mysqlinfo.api.choosing)。如果你关心学习,[这里是很好的PDO教程](http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers)。 –
在发送到查询之前,你能'echo $ result'吗?如果代码的第一部分工作正常,那么在PHP代码期间更有可能有人去疯狂,并且创建表查询不是您认为的那样。 – Fluffeh
$ result echo CREATE TABLE google_csv(ÿþNamevarchar(80),Given_Name varchar(80),Additional_Name varchar(80),Family_Name ...... – user1407430