0

这是 SQL:

TRUNCATE TABLE `dc_path`;
INSERT INTO dc_path (coords) VALUES('(40.64406436923055, -8.638539251709062)');
INSERT INTO dc_path (coords) VALUES('(40.62791121610622, -8.615193304443437)');
INSERT INTO dc_path (coords) VALUES('(40.62895347295352, -8.6625718444825)');

如果我尝试在 phpmyadmin 上执行该查询,它工作得很好,但是通过 php 它给了我这个错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO dc_path (coords) VALUES('(40.64406436923055, -8.638539251709062)');I' at line 1

我尝试了很多东西,但我无法解决!

提前致谢。

编辑:

PHP

function insertPath($coords){
    $conn = connectDB();
    $coords = explode(";",$coords);
    $sql = "";

    $sql = "TRUNCATE TABLE `dc_path`; ";

    for($i=0;$i<count($coords)-1;$i++){
        $sql .= "INSERT INTO dc_path (coords) VALUES('".$coords[$i]."');";
    }
    echo $sql;
    $query = mysql_query($sql, $conn) or die(mysql_error());

    closeDB($conn);
    return true;
}

$coords 变量包含以下值:

(40.638854101691635, -8.6515855163575);(40.629474595277166, -8.63235944213875);
4

5 回答 5

4

您不能在一次mysql_query()调用中执行多个查询。

所以将该字符串拆分为 4 个单独;的查询(最后没有),一切都会正常

于 2012-04-16T22:28:42.647 回答
3

不要使用旧的 mysql_connect API,使用 mysqli - 它支持多个语句合二为一。

在此处阅读有关不同 PHP - mySQL api 的更多信息:http ://www.php.net/manual/en/mysqlinfo.api.choosing.php

那里说不建议将旧的 mysql API 用于新项目,并且已宣布长期弃用。

于 2012-04-16T22:28:22.577 回答
3

你用什么函数来运行这个?如果您使用的是 mysql_query 那么您一次只能执行一个查询,但是您可以将插入语句合并为一个

INSERT INTO dc_path (coords) VALUES
('(40.64406436923055, -8.638539251709062)'),
('(40.62791121610622, -8.615193304443437)'),
('(40.62895347295352, -8.6625718444825)');
于 2012-04-16T22:29:39.213 回答
2
function insertPath($coords){
    $conn = connectDB();
    $coords = explode(";",$coords);

    mysql_query("TRUNCATE TABLE `dc_path`", $conn);

    for($i=0;$i<count($coords)-1;$i++){
        mysql_query("INSERT INTO dc_path (coords) VALUES('".$coords[$i]."')", $conn);
    }

    closeDB($conn);
    return true;
}
于 2012-04-16T22:31:57.373 回答
1

您不能使用 mysql_query() 查询多个语句。

像这样查询

for($i=0;$i<count($coords)-1;$i++){
    $sql = "INSERT INTO dc_path (coords) VALUES('".$coords[$i]."');";
    $query = mysql_query($sql, $conn) or die(mysql_error());
}
于 2012-04-16T22:35:16.850 回答