현재 한 영역에서 작동하지만 다른 영역에서는 작동하지 않는 데이터베이스 호출이 있습니다.PHP PDO 액세스 문제
데이터베이스 클래스의 이름이 $ database이고 데이터베이스 생성자에 전달 된 $db
PDO 개체가 있습니다.
이 모든 것이 정상적으로 작동합니다.
이 코드 호출이 기능이 예상대로 사용자 정보를 반환
public function get_user($user){
$user = $this->db->quote($user);
$query = "SELECT * FROM login where username = $user";
$user = $this->db->query($query);
$user_info = $user->fetch();
return $user_info;}
라고
$user_info = $database->get_user($user);
작동
또 다른 호출은
$user = $database->confirm($confirm);
$user_info = $database->get_user($user);
는 C이다 onfirm 함수는 다음과 같습니다.
public function confirm($confirm){
$confirm = $this->db->quote($confirm);
$query = "SELECT * FROM temp_data WHERE hash = $confirm;";
$count = $this->db->query($query);
$info = $count->fetch();
$user = $info['username'];
$user = $this->db->quote($user);
$query = "DELETE FROM temp_data WHERE username = $user;";
$this->db->exec($query);
$query = "UPDATE login SET confirm = '1' WHERE username = $user;";
$this->db->exec($query);
return $info['username'];}
이 호출은 완벽하게 작동합니다.
그것은는 get_user
나는 문제 해결을 수행하고 문제가 get_user
에 다음 줄이 어떤 PDO 개체를 반환하지 않는 것을 발견
실패 그러나 get_user
이
을 받아들이는 인용 부호로 둘러싸이지 않은 형식으로 사용자 이름을 반환 또는 모든 데이터
$user = $this->db->query($query);
이것은 흥미로운 부분입니다. 나는 try catch를했고 PDO는 PDO 예외를 던지지 않고 일반적인 예외를 던지지도 않습니다. 오류 로그에 오류가 없습니다. 그것은 단지 작동하지 않는 것처럼 보입니다. 나는 결과를 출력하기 위해 Print_r
, get_class
및 echo
다음에 die;
을 사용하여 단계별로 진행했으며 두 번째 데이터베이스 호출을 수행 할 때까지 모두 작동합니다. 가져 오기가 오류를 반환하지만 그것은 exec가 전혀 실행되지 않는다는 사실에 기인합니다.
unset()
을 사용하여 내 기본 DB 연결을 만들고 사용하려고 시도했을 때 스크립트가 임의의 해시
- 사용자의 클릭을 실행할 때 그것은 다음
무슨 일이 일어나고있다 만들어집니다 임시 데이터베이스의 사용자 이름
- 그런 다음 확인 된 사용자를 수정하고 임시 항목을 삭제 한 다음 사용자 이름
- 을 반환 한 다음
get_user
을 호출합니다. 이 경우 사용자 정보가 반환되어 twilio 하위 계정을 설정합니다.이것은 시스템이 실패하고있는 곳입니다 - 그 다음에 무슨 일이 일어 났습니까 (그리고 여기서 오류가 나기 때문에 테스트를하려고합니다) 그것은 twilio API에 액세스하고 AUTH와 SID 토큰을 가져 와서 쓰기 때문입니다 그것은 사용자가 다음 새 사용자가 로그인 페이지 I 가까이 커서를 사용하여 시도하고 그것이 작동하지
로 재
누군가가 내가 가지고있는 문제에 대해 어떤 통찰력도 줄 수 있거나 내가 잘못하고있는 것이 있다면 감사 할 것입니다. PDO 개체를 처음 사용하기 때문에 어딘가에서 어리석은 실수를 범했다고 확신합니다.
귀하의 문제에 대한 답변을 얻지 못했습니다. 하지만 왜 bindParam() 메서드를 사용하여 값을 SQL에 이스케이프하는 것과 바인딩하지 않습니까? – stUrb
'$ info'에는 무엇이 들어 있습니까? 어쩌면이 배열은 비어있을 수 있습니다. 결과적으로 두 번째 질의는'username '이''' ''' – stUrb
인 것으로 확인되고 잘 작동한다. get_user와 문제가있어 $ info가 올바른 정보를 다시 찾는다. – StevenDStanton