나는 다음과 같은 테이블이 : 나는 명령 행에서 다음 명령을 실행하면는 mysql_query() 동작은 명령 줄에서 MySQL과 다른
insert_test | CREATE TABLE insert_test (
id int(11) NOT NULL AUTO_INCREMENT,
closed int(11) NOT NULL DEFAULT '0',
user int(11) DEFAULT '-1',
level int(11) DEFAULT '-1',
comment text,
count int(11) DEFAULT '1',
PRIMARY KEY (id,closed),
UNIQUE KEY user (user,level,closed)
)
가 :
INSERT INTO db.insert_test (closed, user, level, comment, count) VALUES (0, 1, 50, 'First insert', 1) ON DUPLICATE KEY UPDATE comment=VALUES(comment), count=count+1;
INSERT INTO db.insert_test (closed, user, level, comment, count) VALUES (0, 1, 75, 'Second insert', 1) ON DUPLICATE KEY UPDATE comment=VALUES(comment), count=count+1;
을 ...이입니다 출력 내가 얻을 :
+----+--------+------+-------+---------------+-------+
| id | closed | user | level | comment | count |
+----+--------+------+-------+---------------+-------+
| 9 | 0 | 1 | 50 | First insert | 1 |
| 10 | 0 | 1 | 75 | Second insert | 1 |
+----+--------+------+-------+---------------+-------+
내가 mysql_query()
를 사용하여이 명령을 실행하면, 이것이 내가 무엇을 얻을 수 있습니다.
+----+--------+------+-------+---------------+-------+
| id | closed | user | level | comment | count |
+----+--------+------+-------+---------------+-------+
| 11 | 0 | 1 | 50 | Second insert | 2 |
+----+--------+------+-------+---------------+-------+
그래서 쿼리를 업데이트하는 대신 나는 mysql_query()
기능을 사용할 때 안하면 두 삽입이 다른 수준을 가지고 있고 그래서 그들은 고유 때문에 바로 ..., 새 행을 삽입한다? 내가 잘못 했는가, 아니면 여기에 뭔가가있는가?
편집 : 나는 그것을 사용 정확히 코드 조각은 다음과 같습니다
char* query = "INSERT INTO db.insert_test (closed, user, level, comment, count) VALUES (0, 1, 50, 'First insert', 1) ON DUPLICATE KEY UPDATE comment=VALUES(comment), count=count+1;";
char* query2 = "INSERT INTO db.insert_test (closed, user, level, comment, count) VALUES (0, 1, 75, 'Second insert', 1) ON DUPLICATE KEY UPDATE comment=VALUES(comment), count=count+1;";
mysql_query(link, query);
mysql_query(link, query2);
내가 링크가 올바른지 알고는 제외하고 (즉, 쿼리가 실행) 작업을 수행하기 때문에이 코드가 실행되고 있음을 삽입하는 대신 업데이트하는 위치를 지정하십시오.
mysql_query()를 실행하면 코드 스 니펫을 공유 할 수 있습니까? – dchayka
** 경고 ** : PHP를 배우려는 분이라면 [mysql_query'] (http://php.net/manual/en/function.mysql-query.php) 인터페이스를 사용하지 마십시오. PHP 7에서 제거 된 것은 너무 무섭고 위험합니다. [PDO는 배우기가 어렵지 않습니다.] (http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps -pdo-for-database-access /)와 [PHP The Right Way] (http://www.phptherightway.com/)와 같은 가이드가 모범 사례를 설명합니다. – tadman
위에 코드 스 니펫을 달았습니다. 더 필요한 경우 알려주세요. 그리고 내가 언급 했어야하는데, 이것은 PHP가 아니라 C입니다. – user2073805