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()1 回の呼び出しで複数のクエリを実行することはできません。

したがって、その文字列を 4 つの個別のクエリに分割すると (;最後に)、すべてが機能します。

于 2012-04-16T22:28:42.647 に答える
3

古い mysql_connect API を使用しないでください。1 つの中で複数のステートメントをサポートする 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 を使用している場合、一度に実行できるクエリは 1 つだけですが、insert ステートメントを次のようなものにマージできます。

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 に答える