이하 쿼리 mysql 터미널, workbench 및 php에서 다른 방법으로 실행하십시오. mysql terminal과 workbench는 같은 결과를 주지만 php가 다른 결과를줍니다 (쿼리가 2 번 실행되는 것처럼 보입니다). 수량에서 1 항목을 줄이려고합니다. 하지만 PHP에서 (codeigniter, pdo connection) 양 (항상 언급 한 두 번)에서 2 항목을 뺍니다. 참고 :이 쿼리를 두 번 실행하지 않는다고 확신합니다.mysql 업데이트 쿼리를 두 번 실행하십시오.
UPDATE tbl_stock tsk,
(SELECT
tsk.id_stock, tsk.qty
FROM
tbl_store ts
inner join tbl_stock tsk ON ts.id_store = tsk.id_store
where
ts.id_physical_place = 2
and ts.store_status = 1
and tsk.stock_status = 1
and tsk.id_products = 796
limit 1) tmp
SET
tsk.qty = (if(tmp.qty >= 1,
(tmp.qty - 1),
ifnull(tmp.qty, 0)))
WHERE
tsk.id_stock = tmp.id_stock
미리 감사드립니다.
업데이트 : 단말로부터
- 유사한>
쿼리 OK 1 열 영향, 2 경고 (0.03 초) 행 1 변경된 1 개 경고 : 0
주 (코드 1592) : BINLOG_FORMAT = STATEMENT 이후 명령문 형식을 사용하여 바이너리 로그에 작성된 안전하지 않은 명령문. 명령문은 LIMIT 절을 사용하기 때문에 안전하지 않습니다. 포함 된 행 집합을 예측할 수 없으므로 안전하지 않습니다. 참고 (코드 1592) : BINLOG_FORMAT = STATEMENT 이후 명령문 형식을 사용하여 바이너리 로그에 작성된 안전하지 않은 명령문. 행을 검색하는 순서가 기록 될 행 (있는 경우)을 결정하기 때문에 다른 테이블에서 선택한 후 자동 증가 열이있는 테이블에 작성하는 명령문은 안전하지 않습니다. 이 순서는 예측할 수 없으며 마스터와 슬레이브에서 다를 수 있습니다.
관련 PHP 코드가 표시되었습니다. 난 당신이 단순히 PHP 코드를 두 번 실행 기대합니다. – Kami
는 PHP 문제가되어야합니다 – Aris
PHP 코드는 어디에 있습니까? 그리고 PHP 코드가 없다면 PHP가 태그가 붙은 이유는 무엇입니까? – FreshPro