1

だから私はHEREを見てきましたが、私がやっていることの単純さのために少し複雑に思えます..最大で、更新するアイテムを100個扱うことになります(ほとんどの場合、40個のようになります) )

現在、私はこのようなものを持っています

$sql_update = '';
for($x = 0; $x < count($nodes); $x++){
  if($nodes[$x]['loaded'] == 'true'){
    if($nodes[$x]['changed'] == 'true'){
        $sql_update .= 'UPDATE `genetic_decomp`.`tbl_node2view` SET `x` = "'.$nodes[$x]['location']['x'].'", `y` = "'.$nodes[$x]['location']['y'].'" WHERE `tbl_node2view`.`id` = "'.$nodes[$x]['id'].'";'; 
        $sql_update .= 'UPDATE `genetic_decomp`.`tbl_nodes` SET `name` = "'.$nodes[$x]['name'].'", `type` = "'.$nodes[$x]['type'].'" WHERE `tbl_nodes`.`node_id` = "'.$nodes[$x]['id'].'";';
    }
  }
}
if($sql_update != ''){
    $sql_result=mysql_query($sql_update,$connection) or exit("Sql Error".mysql_error());
}

出力を印刷してecho $sql_updateMAMPのSQLボックスに貼り付けると、正常に動作します..必要な2つのテーブルの行を通過して更新します

ただし、上記のコードを実行すると、次のように吐き出されます。

Sql Error
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 'UPDATE `genetic_decomp`.`tbl_nodes` SET `name` = "lala", `type` = "p" WHERE `tbl' at line 1

私は何を間違っていますか?これを行うより良い方法はありますか?

4

4 に答える 4

4

あなたの SQL は構文的に正しいように見えます (単純なものを見落としていない限り)。実際の問題は、複数のステートメントをサポートしていないmysql_query()- を使用しているためです。したがって、この方法では 2 つのクエリを 1 回で実行することはできません。UPDATE

マニュアルから:

mysql_query() は一意のクエリを送信します (複数のクエリはサポートされていません)

同じメモで、mysql_メソッドは非推奨になっているため、私 (およびコミュニティ) はコードを更新してmysqli_またはPDOメソッドを使用することをお勧めします。どちらも単一のステートメントで複数のクエリをサポートします。

mysql_query()(アプリケーション全体を再構築するのではなく)固執する必要がある場合は、クエリを分割して連続して実行してください。

于 2012-10-11T01:39:36.760 に答える
0

mysql_queryを使用している場合は、それらを個別に更新する必要があります。

于 2012-10-11T01:41:13.530 に答える