테이블 결과의 양에 따라 다른 쿼리를 실행하려고합니다.PHP PDO MySQL 결과가 출력되지 않지만 나머지 페이지가로드됩니까?
다음과 같은 내용이 있지만 'echo'데이터가 아닌 끝에있는 텍스트 만 출력합니까?
아무도 내가 잘못한 것을 볼 수 있습니까? 다른 페이지에서 클래스
를 호출
<?php
require 'dbconfig.php';
class User {
function checkUser($uid, $oauth_provider, $username, $email, $twitter_otoken, $twitter_otoken_secret)
{
$query = "SELECT * FROM `users` WHERE oauth_uid = '$uid' and oauth_provider = '$oauth_provider'";
$result = $DBH->query($query);
if (!empty($result)) {
echo 'user';
} else {
echo 'no user';
}
$DBH = null;
}
}
?>
Test page loads
는
나는 아래
...else {
$twitter_otoken=$_SESSION['oauth_token'];
$twitter_otoken_secret=$_SESSION['oauth_token_secret'];
$email='';
$uid = $user_info->id;
$username = $user_info->name;
$user = new User();
$userdata = $user->checkUser($uid, 'twitter', $username,$email,$twitter_otoken,$twitter_otoken_secret);
if(!empty($userdata)){
session_start();
$_SESSION['id'] = $userdata['id'];
$_SESSION['oauth_id'] = $uid;
$_SESSION['username'] = $userdata['username'];
$_SESSION['oauth_provider'] = $userdata['oauth_provider'];
header("Location: splash.php");
}
}
} else {
// Something's missing, go back to square 1
header('Location: login-twitter.php');
}
?>
구성
$host = 'localhost';
$dbname = 'dbname was here';
$user = 'access';
$pass = 'access';
try {
$DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
$DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo $e->getMessage();
}
?>
,369 내 클래스를 호출
당신도 요구하고있다'checkUser' 기능을
할 수? 지금까지 디버그 한 게 뭐야? – Rikesh
당신은 PDO의 아름다움을 사용하지 않습니다. 준비된 진술서! 이것은 시스템을 SQL Injection에 취약하게 만드는 또 다른 방법입니다 : –
$ DBH는 어디에 생성합니까? 예를 들어 클래스에서 상속되거나 싱글 톤/레지스트리 패턴처럼 클래스 필드로 사용해야합니다. – Robert