[SQL] MySQL의 업데이트 쿼리의 증가 값
SQLMySQL의 업데이트 쿼리의 증가 값
나는 1 점을주는이 코드를 만들었습니다,하지만 제대로 작동하지 않습니다.
mysql_query("
UPDATE member_profile
SET points= ' ".$points." ' + 1
WHERE user_id = '".$userid."'
");
그는 5 점처럼 한 예는, 그것이 있어야하므로 $ 포인트 변수는 ... 나는 그것을 원하는 플러스 하나 .. 현재 보유한 가장 포인트 인 5 + 1 = 6 ..하지만, 그것은 단지 변화가 나던 1
어떻게 내가 잘못 한거야? 감사합니다
해결법
-
==============================
1.또한 바로이 작업을 수행 할 수 있습니다 :
또한 바로이 작업을 수행 할 수 있습니다 :
mysql_query(" UPDATE member_profile SET points = points + 1 WHERE user_id = '".$userid."' ");
-
==============================
2.당신은 포인트의 실제 금액을 조회 할 필요없이이 작업을 수행 할 수 있으므로 스크립트를 실행하는 동안 당신에게 시간과 자원을 절약 할 수 있습니다.
당신은 포인트의 실제 금액을 조회 할 필요없이이 작업을 수행 할 수 있으므로 스크립트를 실행하는 동안 당신에게 시간과 자원을 절약 할 수 있습니다.
mysql_query("UPDATE `member_profile` SET `points`= `points` + 1 WHERE `user_id` = '".intval($userid)."'");
그 밖에, 당신이 잘못된 일을했다하면 (포인트 = '5'+ 1) 문자열로 지점의 이전 양을 통과, 당신은 숫자를 문자열로 추가 할 수 있다는 것입니다. ;)
-
==============================
3.희망 내 첫 번째 게시물에 논외 않을거야,하지만 일부 응답자는 잘못을 가지고있는 것 같습니다 나는 문자열 정수의 캐스팅에 조금 확장하고 싶습니다.
희망 내 첫 번째 게시물에 논외 않을거야,하지만 일부 응답자는 잘못을 가지고있는 것 같습니다 나는 문자열 정수의 캐스팅에 조금 확장하고 싶습니다.
이 쿼리의 식을 산술 연산자 (더하기 기호 +)를 사용하기 때문에, MySQL은 숫자로 표현에서 모든 문자열을 변환합니다.
설명하기 위해, 다음은 결과 (6)를 생성합니다 :
SELECT ' 05.05 '+'.95';
MySQL의에서 문자열 연결은 CONCAT () 함수를 필요로하므로이 여기에 모호함이 없으며 MySQL이 수레에 문자열을 변환하고 함께 추가합니다.
나는 실제로 $ 포인트 변수는 사용자의 현재 지점 사실 세트에 없었기 때문에 초기 쿼리가 작동하지 않는 이유는 대부분 생각합니다. 이 중 하나를 제로로 설정하거나 해제 하였다 : MySQL은 제로에 빈 문자열을 캐스팅합니다. 그림를 들어, 다음은 0을 반환합니다 :
SELECT ABS('');
내가 말했듯이, 나는 너무 주제에서 벗어난 것 아니에요 바랍니다. 나는 Daan과 토마스는이 특정 문제에 대한 최상의 솔루션가 있음을 동의합니다.
-
==============================
4.
"UPDATE member_profile SET points = points + 1 WHERE user_id = '".$userid."'"
-
==============================
5.또한,이 "증가"문자열 때 업데이트를 사용 CONCAT
또한,이 "증가"문자열 때 업데이트를 사용 CONCAT
update dbo.test set foo=CONCAT(foo, 'bar') where 1=1
-
==============================
6.누가 업데이트 문자열과 숫자에 필요 SET @a = 0; 업데이트 obj_disposition SET CODE = CONCAT ( 'CD_'@a = @ 2 + 1);
누가 업데이트 문자열과 숫자에 필요 SET @a = 0; 업데이트 obj_disposition SET CODE = CONCAT ( 'CD_'@a = @ 2 + 1);
-
==============================
7.당신은 SQL 주입 위험을 방지하기 위해 PDO를 사용해야합니다.
당신은 SQL 주입 위험을 방지하기 위해 PDO를 사용해야합니다.
이 같은 DB에 연결할 수 있습니다 :
try { $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $bdd = new PDO('mysql:host=xxxx;dbname=xxxx', 'user', 'password', $pdo_options); $bdd->query('SET NAMES "utf8"'); } catch (PDOException $e) { exit('Error'); }
쿼리 DB에 대한 필요가 점수를 얻을 수 있습니다. 당신은 업데이트 쿼리 (포인트 = 포인트 + 1)에 직접적으로 증가 할 수 있습니다.
(참고 : 또한, 당신이 다른 사용자가 업데이트되면 데이터와 값을 변경 할 수 있습니다 첫 번째를 선택해야하기 때문에 PHP로 값을 증가하는 좋은 아이디어가 아니다.)
$req = $bdd->prepare('UPDATE member_profile SET points = points + 1 WHERE user_id = :user_id'); $req->execute(array( 'user_id' => $userid ));
-
==============================
8.'에서 점을 제거합니다 :
'에서 점을 제거합니다 :
mysql_query("UPDATE member_profile SET points=".$points."+1 WHERE user_id = '".$userid."'");
당신은 원래 쿼리 문자열에 정수 값을 "캐스팅"은 ...
-
==============================
9.왜 PHP가 일을 못하게합니까?
왜 PHP가 일을 못하게합니까?
"UPDATE member_profile SET points= ' ". ($points+1) ." ' WHERE user_id = '".$userid."'"
from https://stackoverflow.com/questions/2259155/increment-value-in-mysql-update-query by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 서로 데이터를 하나 개의 테이블을 업데이트 (0) | 2020.04.13 |
---|---|
[SQL] 기본 키가없는 SQL 테이블에서 삭제 중복 레코드 (0) | 2020.04.13 |
[SQL] SQL 서버는 어디 식 케이스를 무시 (0) | 2020.04.13 |
[SQL] 어떻게 SQL 서버에서 동시에 두 테이블에 데이터를 삽입 할 수 있습니까? (0) | 2020.04.13 |
[SQL] MySQL의 SQL은 : 특정 항목을 먼저하고 그 다음 나머지 항목을 정렬 (0) | 2020.04.13 |