我目前有一个数据库调用,它在一个区域中工作,但不是另一个区域。PHP PDO访问问题
我的数据库类标记为$ database,并且有$db
PDO对象传递给数据库构造函数。
这一切工作正常。
此代码调用工作
$user_info = $database->get_user($user);
该功能被称为
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 = $database->confirm($confirm);
$user_info = $database->get_user($user);
的C有效的功能看起来像这样
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
失败
我已经做了排查,发现问题,在get_user
下面的行不返回任何PDO对象不带引号的格式,或任何数据
$user = $this->db->query($query);
这是一个有趣的部分。我做了一个try catch,PDO抛出了没有PDO异常,它甚至不抛出一个普通的异常。错误日志中没有错误。它似乎没有工作。我已经一步一步地使用Print_r
,get_class
和echo
,然后是die;
来输出我的结果,这一切都运行起来,直到我做第二次数据库调用。取回正在返回一个错误,但这只是由于执行没有运行的事实似乎
我曾尝试使用unset()
除了我的主要数据库连接创建并传递到我的数据库对象时它创建
这里是发生了什么事时,脚本的链接上运行
- 用户点击一个随机哈希
- 该系统从一开始得到的哈希,然后使用该太拉来自临时数据库的用户名。
- 然后,它会将用户修改为已确认,删除临时条目,然后从此处返回用户名
- 然后调用
get_user
。在这种情况下,它只是返回用户信息来设置twilio子帐户。这是系统失败的地方 - 之后,发生了什么(而且它试图从我的测试中做到这一点,因为我在这里得到一个错误)是它访问twilio API,获取一个子帐户AUTH和SID令牌并写入它的用户文件
- 然后,新用户会被重定向到登录页面
我一直在使用接近光标尝试并没有奏效。
如果任何人都可以给我任何见解我遇到的问题,或者我做错了什么,我将不胜感激。我是使用PDO对象的新手,所以我确信我在某个地方犯了一个愚蠢的错误。
我还没有得到您的问题的答案。但是,为什么你不使用'bindParam()'方法绑定值与转义到SQL? – stUrb 2012-04-18 19:57:49
'$ info'包含什么?也许这个数组是空的。结果,第二个查询被输入'''''' – stUrb 2012-04-18 20:01:02
确认工作正常,问题出在get_user上,所以$ info重新提供了正确的信息 – StevenDStanton 2012-04-19 22:53:51