2017-01-31 32 views
0

PHPでMySQLiを使用しており、投票番号を更新する簡単なクエリがあります。PDO値を更新して更新値を取得する方法

UPDATE votes SET yes=yes+1 WHERE artId=$artId 

このアップデート後、私は更新した価値を得たいと思います。それは1つのクエリでそれを行うことは可能ですか? または、別のSELECTクエリを実行する必要がありますか?

ありがとうございます。

+0

あなたのコード内でこのプロシージャを呼び出すことができます:MySQLの中であなたは 'UPDATEから読み取ることができません'ステートメント、クライアントライブラリに関係なく。 SQLに未処理のPHP変数を注入することをやめ、準備された文を意図どおりに使用することをお勧めします。 –

+0

あなたは参照することができます:http://stackoverflow.com/questions/7446073/get-updated-value-in-mysql-instead-of-affected-rows –

+0

私はRAW変数を注入しません。私は準備されたステートメントを使用しますが、これは単なる例です。参照リンクありがとうございます。だから運賃は決してDELIMiTERSを使用しないので、今私は実際にそれを使用することはありません。 – Klick

答えて

-1

私は単一のクエリでそれを行うことは可能ではないと思います..しかし、更新された値などを格納するためにあなたが

  1. 使用する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のを使用するかどうかは明らかではないのですが、私は問題はないと思います

+0

最初にあなたのコードはPDOオブジェクトを返します: "object(PDOStatement)#7(1){ [" queryString "] => 文字列(66)" UPDATE vote SET yes = @yes:= yes + 1 WHERE artId = '22 '; SELECT @yes " }"更新された値に関する情報はありません。 – Klick

+0

デリミタについて、私はそれを見たことがないので、使用方法はわかりません。あなたは、マイルの実装例をshwoできますか?ありがとうございます – Klick

+0

http://www.mysqltutorial.org/stored-procedures-parameters.aspx –

関連する問題