为什么MySql多个查询导致语法错误,而单独工作成功?

时间:2016-03-26 20:04:34

标签: php mysql

我尝试使用以下代码从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语法有错误;查看与您的MySQL服务器版本相对应的手册,以便在“LOAD DATA INFILE&#39; /wamp/www/mytools/tablecreate/tables/subjects.csv'”附近使用正确的语法。 INTO TABL&#39;在第1行

你的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会返回什么?

1 个答案:

答案 0 :(得分:1)

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