PHPでMySQLiを使用しており、投票番号を更新する簡単なクエリがあります。PDO値を更新して更新値を取得する方法
UPDATE votes SET yes=yes+1 WHERE artId=$artId
このアップデート後、私は更新した価値を得たいと思います。それは1つのクエリでそれを行うことは可能ですか? または、別のSELECTクエリを実行する必要がありますか?
ありがとうございます。
PHPでMySQLiを使用しており、投票番号を更新する簡単なクエリがあります。PDO値を更新して更新値を取得する方法
UPDATE votes SET yes=yes+1 WHERE artId=$artId
このアップデート後、私は更新した価値を得たいと思います。それは1つのクエリでそれを行うことは可能ですか? または、別のSELECTクエリを実行する必要がありますか?
ありがとうございます。
私は単一のクエリでそれを行うことは可能ではないと思います..しかし、更新された値などを格納するためにあなたが
使用するSQL変数のように考え出すことができる他の効率的な方法があります
UPDATE votes SET
yes= @yes:= yes + 1
WHERE artId='$id';
SELECT @yes;
@Alvaroの2番目の効率的なコメントは、準備文を使用することを示唆しています。以下のような
//DELIMITER
CREATE PROCEDURE updateme(ids varchar(64))
BEGIN
UPDATE votes SET
yes= @yes:= yes + 1
WHERE artId= ids;
SELECT @yes;
END //
DELIMITER
そして、あなたはそれはあなたがPDOまたはmysqliのを使用するかどうかは明らかではないのですが、私は問題はないと思います
最初にあなたのコードはPDOオブジェクトを返します: "object(PDOStatement)#7(1){ [" queryString "] => 文字列(66)" UPDATE vote SET yes = @yes:= yes + 1 WHERE artId = '22 '; SELECT @yes " }"更新された値に関する情報はありません。 – Klick
デリミタについて、私はそれを見たことがないので、使用方法はわかりません。あなたは、マイルの実装例をshwoできますか?ありがとうございます – Klick
http://www.mysqltutorial.org/stored-procedures-parameters.aspx –
あなたのコード内でこのプロシージャを呼び出すことができます:MySQLの中であなたは 'UPDATEから読み取ることができません'ステートメント、クライアントライブラリに関係なく。 SQLに未処理のPHP変数を注入することをやめ、準備された文を意図どおりに使用することをお勧めします。 –
あなたは参照することができます:http://stackoverflow.com/questions/7446073/get-updated-value-in-mysql-instead-of-affected-rows –
私はRAW変数を注入しません。私は準備されたステートメントを使用しますが、これは単なる例です。参照リンクありがとうございます。だから運賃は決してDELIMiTERSを使用しないので、今私は実際にそれを使用することはありません。 – Klick