문제

좋은 날!

동일한 매개 변수로 동일한 업데이트 문을 두 번 실행하려고 노력하고 있으며 두 번째 경우에는 실행되지 않은 것 같습니다.

$update_query = $this->db->connection->prepare('UPDATE `Table SET `field` = :price WHERE (`partnum` = :partnum)');

$update_query->execute(array('price' => 123, 'partnum' => test));
var_dump($update_query->rowCount()); //returns 1

// If I insert here any statement it works as expected

$update_query->execute(array('price' => 123, 'partnum' => test));
var_dump($update_query->rowCount()); //returns 0!

MySQL 쿼리 캐시가 활성화되어 있지 않습니다.

감사!

도움이 되었습니까?

해결책

만약에 UPDATE 연속으로 데이터를 변경하지 않고 MySQL 이 행을 영향을받는 것으로 계산하지 않습니다.

mysql> SELECT val FROM t_source2 WHERE id = 1;
+-----+
| val |
+-----+
|  10 |
+-----+
1 row in set (0.00 sec)

mysql> UPDATE t_source2 SET val = 1 WHERE id = 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> UPDATE t_source2 SET val = 1 WHERE id = 1;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0

두번째 UPDATE 성명서는 실행되었지만 적은 영향을 미치지 않았습니다 MySQL아무것도 바뀌지 않았기 때문에의 관점.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top