我正在尝试调试一个奇怪的问题。我有一个查询,它连接几个表来提取各种信息来填充发送的一些电子邮件。每当我尝试生成一些测试电子邮件以验证代码是否正常工作时,由于此查询问题,其中一封电子邮件产生时没有任何数据。
以下是运行查询的函数:
function getSData($id,$uid)
{
global $sql;
echo "PID: ".$id." | UID: ".$uid."</br>";
if ($pd_stmt = $sql->prepare("select t1.Name,t2.SDate,t2.DCode,t3.Quantity,t2.Location,t3.Cost from seminar_events t2 inner join seminars t1 on t2.SID = t1.ID inner join cart_list t3 on t2.ID = t3.PID where t2.ID = ? and t3.CID = ?;"))
{
if ($pd_stmt->bind_param('ii',$id,$uid))
{
if ($pd_stmt->execute())
{
$pd_stmt->bind_result($sname,$sdate,$dcode,$qty,$slocale,$cost);
$pd_stmt->fetch();
echo "Array:";
print_r(array("Name"=>$sname,
"SDate"=>$sdate,
"DCode"=>$dcode,
"Quantity"=>$qty,
"Local"=>$slocale,
"Cost"=>number_format((float)$cost)));
} else{
echo $sql->error;
}
} else{
echo $sql->error;
}
} else{
echo $sql->error;
}
}
这是PHP输出:
103 //来自早期的回显,在调用此函数之前检查$ pID的值,并作为第一个arg传递
PID:103 | UID:24
阵列:
如果我接受这个查询和上面的值并将它们替换为?查询中的参数并在PHPMyAdmin中运行我得到了我期望的记录。
答案 0 :(得分:0)
如果您要编写哪个SQL AL,那么您使用它会有所帮助,因为它似乎不是PDO或Mysqli。但我可以想到 - 它与两者类似,然后你应该看看bind_param采用哪些参数。在PDO中,有变量的参数,变量和类型。请检查此方法的参考,如果有一个bind_value方法,那么这里会更好,或者如果执行方法无法获得输入参数,如http://php.net/manual/de/pdostatement.execute.php