데이터베이스에서 세션으로 데이터를 가져 오는 가장 효율적인 방법

StackOverflow https://stackoverflow.com/questions/25767

  •  09-06-2019
  •  | 
  •  

문제

많은 양의 데이터를 가져 오는 가장 빠른 방법 (골프 생각)과 이미 가지고있는 작업을 계속하지 않고도 MySQL 데이터베이스에서 세션으로 많은 양의 데이터를 가져 오는 가장 효율적인 방법 (성능 생각)은 무엇입니까?: 라코 디스

누구나 예라고 묻기 전에 '선택

편집 : 예, 데이터를 삭제하여 SQL 삽입이 발생하지 않도록 코드에서 더 위쪽에 있습니다.

도움이 되었습니까?

해결책

내가 생각해 냈는데 효과가있는 것 같습니다. 라코 디스

다른 팁

가장 효율적 : 라코 디스

완료.

이제 배열에 저장됩니다.따라서 필드가 사용자 이름이라고 가정합니다. 라코 디스

데이터는 배열의 이름입니다. 사용자 이름은 배열 필드입니다. 여기에는 해당 필드의 값이 들어 있습니다.

편집 : 일부 구문 오류 수정 : P하지만 아이디어를 얻었습니다.

좋아요, 이것은 귀하의 질문에 대한 답변이 아니지만 현재 코드로 인해 SQL 주입에 개방되지 않습니까?

내가 틀렸을 수도 있고, PHP로 일한 적이 없으며, SQL에서 문자열을 사용하고 알람 벨이 울리기 시작했습니다!

수정 :

귀하의 게시물을 변경하려는 것이 아닙니다. 철자 오류를 수정하고있었습니다. 롤백하지 마십시오.

'대량의 데이터'가 무슨 뜻인지 잘 모르겠지만 한 명의 사용자에 대해서만 데이터를 초기화하는 것 같습니다.그렇다면 데이터베이스에 수백 개의 열과 수 메가 바이트의 데이터가 포함되어 있지 않는 한이를 최적화 할 이유가 없습니다.

또는 다르게 표현하기 위해이를 최적화해야하는 이유는 무엇입니까?성능 문제가 있습니까?

지금하고있는 것은 간단한 접근 방식이며, 특정 문제가없는 한 다르게해야 할 이유가 전혀 없습니다.

사용자 개체에 사용자 데이터를 래핑하면 프로그램 구조에 도움이 될 수 있습니다.입력 한 내용을 확인하는 것도 좋은 생각입니다.

@Unkwntech 정확 해 보이지만 여기 를 이끌었던 Google을 따르는 것이 원할 것 같습니다. mysql_real_escape_string () 으로 변경

편집과 관련하여 효율적 의 철자를 수정하고 "무엇이 무엇입니까"를 제거했습니다 .. 주제가 모든 것을 말하고 있으므로 실제로는 필요하지 않습니다.

"1 분 전에 수정 됨"을 클릭하여 수정 내역 (실제 변경 사항을 멋지게 강조)을 검토 할 수 있습니다.질문 하단에 텍스트

예를 들어 json을 사용해보세요. 라코 디스

그 기능의 구현이 그가 이미하고있는 것보다 더 빠릅니까?

다른 사람이 마크 다운에]를 입력하는 데 문제가 있습니까?붙여 넣어야 해요

예, 버그가 있습니다.

@Anders-50 ~ 75 개의 열이 있습니다.

다시 말하지만, 이것이 실제로 응용 프로그램에서 성능 문제를 일으키지 않는 한 최적화하는 데 신경 쓰지 않을 것입니다.그러나 성능이 문제라면 처음에는 일부 데이터 만 가져오고 필요에 따라 다른 열을 지연로드하는 것을 고려할 것입니다.

Unkwntech의 제안이 실제로 효과가있는 경우 암호 열이 해당 필드 중 하나이기 때문에 모든 것을 파악하지 않도록 SELECT 문을 변경하는 것이 좋습니다.

이 내용을 세션에 보관해야하는지 여부에 대해서는 왜 안 되나요?어쨌든 사용자가 로그인 할 때 DB를 확인하려고한다면 (그때 그렇게 될 것이라고 가정합니다.) 어쨌든 계획한다면 세션에 상당히 민감하지 않은 정보 (예 : 이름)를 저장하는 것이 좋습니다.방문하는 동안 그 정보를 사용하는 것에 대해.

성능 문제를 일으키는 것은 아니지만 코드가 좀 더 깔끔해 보이길 바랍니다.

그런 다음 클래스에서 사용자 데이터를 래핑합니다.$ _SESSION을 직접 수정하면 다소 더러워 보입니다.데이터를 사전에 보관하려면 별도의 클래스에 넣어도 계속 수행 할 수 있습니다.

모든 열을 반복하고 이름을 가져와 동일한 키 이름을 가진지도에 데이터를 복사하는 루프를 구현할 수도 있습니다.이렇게하면 내부 변수 (사전의 키로 명명 됨)와 데이터베이스 열 이름이 항상 동일합니다.(이것은 또한 데이터베이스에서 열 이름을 변경할 때 변수 이름을 변경하는 단점이 있지만 이것은 매우 일반적이고 잘 받아 들여지는 절충안입니다.)

예를 들어 json을 사용해보세요. 라코 디스

수정 나중에 json_decode 변수를 $_SESSION['data']하고 필요한 모든 데이터가 포함 된 배열을 얻습니다.

설명 :

작성하는 코드 줄 수를 줄이려면 json_encodejson_decode를 사용할 수 있습니다. 질문의 예에서 데이터베이스의 각 열을 SESSION 배열에 복사하려면 코드 줄이 필요했습니다. 50-75 줄의 코드로 수행하는 대신 전체 데이터베이스 레코드를 문자열로 json_encoding하여 1로 수행 할 수 있습니다. 이 문자열은 SESSION 변수에 저장할 수 있습니다. 나중에 사용자가 다른 페이지를 방문하면 전체 JSON 문자열과 함께 SESSION 변수가 있습니다. 이름을 알고 싶다면 다음 코드를 사용할 수 있습니다. 라코 디스

이 방법은 한 줄씩 복사하는 것보다 빠르지는 않지만 코딩을 절약하고 데이터베이스 또는 코드의 변경에 더 강합니다.

BTW 다른 사람이]를 마크 다운에 입력하는 데 문제가 있습니까? 붙여 넣어야합니다.

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