Wednesday, December 11, 2013

아 짜증나는 PDO

뭔놈의 row 개수 세기가 이렇게 어렵냐.

SELECT COUNT(*) 하고 나서 뭘 어쩌라는 건지...


PDO 만든 색기는 찢어죽여야 한다.


아 PDO가 문젠지 MySQL이 문젠진 모르겠는데 어쨌든...아...콱



결론은 이거임

$STH_SELECT = $dbh->query("SELECT count(*) FROM Table");
$Count = $STH_SELECT->fetchColumn();
http://stackoverflow.com/questions/10956934/select-count-sum-using-php-pdo
(prepare, execute 쓰는 놈은 사살! (탕탕))
이놈의 거 PDO로 한다고 prepare, execute 해 보다가 삽질만 수십 번 했다. 1)


SO를 보다 보면 이거 말고도 질문/답변이 매우 다양하다. 원래 특효약이 없는 질환일수록 치료법이 다양한 법. 개수 구하는 게 그렇게 어려운 일이라니! 게다가 해 보면 나머지는 다 안 됨. PHP 문법은 맞는데 MySQL에서 안 되거나 뭐 그딴 거임. 아오 ActiveX 같은 새끼들...


fetchColumn도 엿같은게 fetchColumn()은 사실 fetchColumn(0)이고,

fetchColumn(i)는 i번째 column을 가져오라는 얘기다.

그럼 row 번호는 뭐야? fetch라는 게 그냥 순서대로 다음 row를 가져오는 거니까 번호 따위는 없는 거다. fetch란 원래 한 번만 하는 게 아니라 계속 하니까 그런 것(미친놈아 그냥 개수 구하랬더니 뭔 fetch를 하고 지랄이여).

애초에 fetchColumn() 같은 걸 만들지 말고 fetchColumn(0)만 허용했어야지.

COUNT 같은 건 정상인의 사고방식이라면 어떤 집합의 속성(property)일 텐데, 이걸 row=0 column=0으로 가져오게 하는 거 자체가 미친 짓이다. SQL이 원래 그렇게 생겨먹긴 했지만 객체지향을 하려면 제대로 해야지. PDO 같은 걸 만들지 말든가.

그러니까 여러분은 MySQL + PHP를 멀리하고 LINQ 짱짱맨을 가까이 하는 게 좋습니다.

빨리 ASP.NET으로 갈아타든지 해야지 이런..


1) GET/POST로 받은 숫자를 WHERE 절에 추가하려고 하는데, prepare/bindParams/execute으로 하니까 숫자랑 문자열을 구분해 줘야 해서 코드가 더러워지고 매우 헷갈린다. 결국 문자열이 될 건데 그렇다고 그냥 문자열로 넣어버리면 멋대로 '를 추가하기 때문에 column이 int 형식이면...


No comments:

Post a Comment

창 핸들을 만드는 동안 오류가 발생했습니다

System.ComponentModel.Win32Exception was unhandled   MyForm w = new MyForm IntPtr handle = wnd.Handle;   // Exception occurs here class MyFo...