2017-09-01 13 views
1
$conn->query("UPDATE users SET totalClicks = totalClicks + 1 WHERE id = '$uid'"); 


$conn->query("UPDATE link SET clicks = clicks + 1 WHERE userid = '$uid' AND id = '$id'"); 


$conn->query("UPDATE data SET total_actions_3 = total_actions_3 + 1"); 

私はこれらの3つのクエリを1つの準備文に入れたいと思います。1つのクエリで複数のUPDATEステートメントを結合する方法は?

+3

**警告**:ユーザーデータがクエリ内で使用されるため、これには重大な[SQLインジェクションのバグ](http://bobby-tables.com/)があります。可能な限り**準備文**を使用してください。これらは[mysqli](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と[PDO](http://php.net/manual/)で行うのはかなり簡単です。 en/pdo.prepared-statements.php)ここで、ユーザが提供するデータは '?'または ':name'のインジケータで指定され、後で' bind_param'や 'execute'を使ってデータを入力します。 ** '$ _POST'、' $ _GET'、または任意のユーザーデータを直接クエリに入れないでください。 – tadman

+1

これは更新している3つの異なるテーブルです。なぜそれをそのままにして、それらを 'BEGIN TRANSACTION'で包んでみませんか? – tadman

+0

mysqlストアドプロシージャの使用を検討してください。しかし、データベースに常にビジネスロジックを置くことは良い考えではありません。 –

答えて

0

それらを組み合わせることはお勧めできません。彼らは彼らのままにしておきます。

関連する問題