为什么MySql多个查询会导致语法错误,而单独查询却能成功


Why do MySql multiple queries cause syntax error, while separately work successfully?

我正试图用以下代码从csv加载数据。

$loadsql = 'delete from tablecreate where table_name='''.$tablename.''';
LOAD DATA INFILE ''/wamp/www/mytools/tablecreate/tables/'.$tablename.'.csv'' 
INTO TABLE tablecreate 
FIELDS TERMINATED BY '','' 
LINES TERMINATED BY ''''r''n'' 
IGNORE 2 LINES;';
$result = mysqli_query($con, $loadsql);
if (!$result) { 
    echo "sorry!! data could not be loaded!".mysqli_error($con)."<br>" ;
    echo "your sql is following<br>".$loadsql;
}
else {
    echo "<br>"."data loaded successfully."."<br>" ;
     }

当我在phpmyadmin上运行此操作时,查询工作正常。但是当我在浏览器中运行上面的php代码时,输出如下:

您的SQL语法有错误;在第1行的"LOAD DATA INFILE"/wamp/www/mytools/tablecreate/tables/subjects.csv"INTO TABL"附近,请查看与MySQL服务器版本对应的手册,以获得要使用的正确语法

您的sql正在遵循

delete from tablecreate where table_name='subjects';
LOAD DATA INFILE '/wamp/www/mytools/tablecreate/tables/subjects.csv' 
INTO TABLE tablecreate FIELDS TERMINATED BY ','
LINES TERMINATED BY ''r'n' IGNORE 2 LINES;

我添加上面的行只是为了调试它并查看$loadsql的实际内容,不明白为什么在phpmyadmin中复制粘贴以下sql可以完美地工作。

更新

尝试通过注释掉其中任何一个语句来分别执行这两个语句。一次一个,他们两个都很好,问题是他们不能一起工作。

只是一个想法

在多个查询中,如果一个成功,下一个失败,那么$result会返回什么?

要在一个调用中执行多个查询,请使用mysqli_multi_query()。虽然从文档中还不完全清楚,但mysqli_query()一次只能执行一个查询。