奇怪的行为PHP与MySQL

时间:2012-04-16 22:25:28

标签: php mysql html

这是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);

5 个答案:

答案 0 :(得分:4)

您无法在一次mysql_query()电话中执行多次查询。

因此将该字符串拆分为4个独立的查询(最后没有;),一切都会正常工作

答案 1 :(得分:3)

不要使用旧的mysql_connect API,请使用mysqli - 它支持多个语句。

详细了解不同的PHP - mySQL apis:http://www.php.net/manual/en/mysqlinfo.api.choosing.php

在那里它表示不建议将新的mysql API用于新项目,并且已经公布了长期弃用。

答案 2 :(得分:3)

您使用什么功能来运行它?如果您正在使用mysql_query,那么您一次只能执行一个查询,但是您可以将insert语句合并为一个类似的

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

答案 3 :(得分: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;
}

答案 4 :(得分: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());
}