私はPHPPDOを初めて使用し、通常のMySQLクエリをPDOで動作するように変換しています。
phpMyAdminでテストした場合の以下のクエリは、割り当てられた値がSQLステートメントの現在のプレースホルダーを置き換えたときにうまく機能します。しかし、現在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 = "SELECT 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
WHERE u.user_id =:uID AND a.acl_id =:aID AND g.group_id =:gID AND e.entry_id =:eID AND 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>