我是 PHP PDO 的新手,并将一些常规的 MySQL 查询转换为使用 PDO。
当分配的值替换 SQL 语句中的当前占位符时,下面的查询在 phpMyAdmin 中测试时效果很好。但是当我将它配置为现在与 PDO 一起工作时,它不会产生任何结果或错误。有人可以告诉我或告诉我我做错了什么吗?
有人告诉我,我不能将参数作为数组中的引用传递。
如果正确,创建解决方案并仅使用传递给变量的用户 ID 的最佳方法是什么$uid
。谢谢。
<p>// For testing</p>
<pre>$uid = 1;</pre>
<p> </p>
<pre>$array = array(
':uId' => ''.$uid.'',
':aId' => 'u.user_id',
':gID' => 'a.group_id',
':eID' => 'a.entry_id',
':pID' => 'a.permit_id'
);</pre>
// 为 qd_user_usam 表创建 sql
$sql = "选择 u.user_id, a.acl_id, g.group_name, e.entry_level, p.permit_level
FROM qd_users as u, qd_users_acl as a, qd_users_group as g, qd_users_entry as e, qd_users_permission as p
哪里 u.user_id = :uID 和 a.acl_id = :aID 和 g.group_id = :gID AND e.entry_id = :eID 和 p.permit_id = :pID";
<p>try
{</p>
<p>// Build the database PDOStatement</p>
<pre>$_stmt = $this->_dbConn->prepare($sql);</pre>
<pre>$_stmt->execute($array);</pre>
<pre>}
catch(PDOException $e)
{</pre>
<pre>$this->_errorMessage .= 'Error processing user login access. <br /> Line #'.__LINE__ .' '.$e ;</pre>
<pre>die($this->_errorMessage);
}</pre>
<pre>$results = $_stmt->fetchAll(PDO::FETCH_ASSOC);</pre>
<pre>return $results;</pre>
<pre>$results = null;</pre>
<pre>$this->_dbConn = null;</pre>