我试图运行不同的查询,取决于表的结果数量。PHP PDO MySQL不输出结果,但页面加载的其余部分?
我有以下,但它只输出文本在最后,而不是'回声'数据?
任何人都可以看到我做错了什么?
<?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();
}
?>
你甚至称'checkUser'功能?你到目前为止调试了什么? – Rikesh
你没有使用PDO的美丽。准备好的声明!这只是让你的系统容易受到SQL注入攻击的另一种方式。:( –
你在哪里创建$ DBH?你应该使用它作为例如类继承的类字段或者作为单例/注册表模式。 – Robert