【发布时间】:2015-04-10 12:58:41
【问题描述】:
我知道当查询返回 false 时通常会发生错误,但这一次是没有理由的! (或者只是我犯了一个大错误)
if(!$security_SenderId){
$getbaseticketqry = $this->db->prepare("SELECT * FROM `tickets` WHERE `ticket_safeid` = '?'");
$getbaseticket = $getbaseticketqry->execute(array($ticket_safeid));
}else{
$getbaseticketqry = $this->db->prepare("SELECT * FROM `tickets` WHERE `ticket_safeid` = '?' AND `ticket_sender` = '?'");
$getbaseticket = $getbaseticketqry->execute(array($ticket_safeid, $security_SenderId));
}
if($getbaseticket === false){
return false;
}else{
$baseticket = $getbaseticket->fetch(PDO::FETCH_ASSOC);
}
我在以数组形式返回支持票证信息的函数中有这些行,但正如我所说,当我尝试获取票证信息时会发生错误。我试图通过启用 pdo 调试模式和db->errorInfo() 在 fetch line 之前检查 mysql 错误,但它不起作用。
这可能是什么问题?
编辑:
<?php
error_reporting(E_ALL); ini_set('display_errors', 1);
class TICKET_MANAGER
{
function __construct($dbhost, $dbname, $dbuser, $dbpass) {
try{
$this->db = new PDO("mysql:host=$dbhost;dbname=$dbname;charset=utf8", $dbuser, $dbpass);
$this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){
die('Connection failed: ' . $e->getMessage() );
}
}
function viewTicket($ticket_safeid, $security_SenderId = false)
{
try{
if(!$security_SenderId){
$getbaseticketqry = $this->db->prepare("SELECT * FROM `tickets` WHERE `ticket_safeid` = ?");
$getbaseticket = $getbaseticketqry->execute(array($ticket_safeid));
}else{
$getbaseticketqry = $this->db->prepare("SELECT * FROM `tickets` WHERE `ticket_safeid` = ? AND `ticket_sender` = ?");
$getbaseticket = $getbaseticketqry->execute(array($ticket_safeid, $security_SenderId));
}
}catch(PDOException $e){
die('Mysql error: ' . $e->getMessage() );
}
...
}
...
}
【问题讨论】:
-
你是如何使用
TICKET_MANAGER类的? -
我已经为工单管理分离了文件(viewticket.php、newticket.php 等)。我将该类文件包含在 viewticket.php 中,并创建了一个新的 TICKET_MANAGER 实例,然后我只使用 viewTicket() 函数来获取票信息和回复。它从 $_POST 获取 ticket_safeid,从 session 获取 senderId。我确信 safeid 和 senderId 可以正常工作。
-
"and senderId from session" - 你在使用会话本身吗?
-
我将登录用户的 id 作为发件人 id 来获取他自己的票。 se是什么意思?
-
如果你使用会话php.net/manual/en/session.examples.basic.php,这就是我的意思