0

まず第一に、私はウェブ開発に不慣れなので、ばかげた質問なら申し訳ありません.私は配列を持っています.配列のキーはデータベースで更新する必要があるレコードのIDです.次のコードが付属していますクエリを作成し、mysql トランザクションを使用してクエリを実行します (いくつかのレコードを同時に更新する必要があるため)。生成されたクエリは、コマンド ラインを使用して実行すると正常に動作しますが、php コードでは NO!

クエリを生成するコード:

$insert="";

if($run==true){

foreach($result as $key=>$x){


    $insert = $insert ."update project set type='".$x."' "."where "."id=".$key.";";


    }

//echo $insert;
$insert=$insert ."COMMIT;";
$insert= "START TRANSACTION;". $insert;

コードの結果:

START TRANSACTION;update project set type='project1' where id=1;update project set type='project2' where id=2;COMMIT;

それが私に与えるエラー:

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 project set type='project1' where id=1;update project set type='project2'' at line 1

私はSQL接続を含めませんでした...私は高い割合で問題ないと信じているので、それらは問題ありませんが、必要な場合はそれらも含めることができます。

前もって感謝します

4

2 に答える 2

2

MySQL 関数を使用した複数のクエリはサポートされていません。トランザクションを分解する必要があります。

$sql1 = UPDATE `project` SET `type`='project1' WHERE `id`=1;
$sql2 = UPDATE `project` SET `type`='project2' WHERE `id`=2;

ただし、mysqli_mutli_queryまたは別の回答PDOで述べたように使用できます

于 2012-11-21T01:20:04.177 に答える
1

トランザクションへのインターフェースを直接持つ PDO に切り替えたいと思うかもしれません。

$db = new PDO($dsn, $user, $pass);

$stmt = $db->prepare("update project set type= ? where id= ?");
$db->beginTransaction();

try {
  foreach ($result as $key => $x) {
    $db->execute(array($x, $key));
  }

  $db->commit();
} catch (PDOException $e) {
  $db->rollBack();
  throw $e;
}
于 2012-11-21T01:20:05.717 に答える