2017-07-16 6 views
0

私は探してみましたが、なぜコードが機能していないのかわかりません。PDO BindParamとBindValueが機能しない

ここで私はうまく動作しません - クエリは何も返しません、実際には処理が実行時に停止します。

私はexecuteに値をハードコードした場合、それは動作します:それは動作しますが、私は、変数を使用しようとインクルードが実行以上により

$CID = $_POST [ 'loginPageCID' ]; 
$LID = $_POST [ 'loginPageLID' ]; 
$PWD = $_POST [ 'loginPagePwd' ]; 

require_once('connectdb.php'); 

$sql = " 

    SELECT u.*, c.cname, c.cstatus 
    FROM t_users u, t_customers c 
    WHERE u.cid = ? 
    AND c.cid = u.cid 
    AND u.login_id = ? 
    AND u.pwhash = ? 

    "; 

$stmt = $conn->prepare ($sql); 

$stmt->execute (array(1, 'su1', 'hello')); 

$row = $stmt->fetchAll(); 

は黙って失敗しているようだ:

$CID = $_POST [ 'loginPageCID' ]; 
$LID = $_POST [ 'loginPageLID' ]; 
$PWD = $_POST [ 'loginPagePwd' ]; 

require_once('connectdb.php'); 

$sql = " 

    SELECT u.*, c.cname, c.cstatus 
    FROM ids_users u, ids_customers c 
    WHERE u.cid = ? 
    AND c.cid = u.cid 
    AND u.login_id = ? 
    AND u.pwhash = ? 

    "; 

$stmt = $conn->prepare ($sql); 

$stmt->bindParam(1, $CID, PDO::PARAM_INT); 
$stmt->bindParam(2, $LID, PDO::PARAM_STR); 
$stmt->bindParam(3, $PWD, PDO::PARAM_STR); 

$stmt->execute(); // fails here 

$row = $stmt->fetchAll(); 

編集:

connectdb.phpは、次のとおりです。

+0

[例外を有効にする](http://php.net/manual/en/pdo.error-handling.php)しましたか?もしそうなら、何も黙って失敗してはいけません。 – tadman

+0

@tadman - 質問への接続を作成するためのコードを追加しました。 – TenG

+0

戻ってくる結果オブジェクトを詳しく見てください。エラーログに通知がないか再度確認してください。 – tadman

答えて

0

私は同じ問題を持っていたし、私はこの記事で解決策が見つかりました:PDOはすでに短い道を持っているように、ユーザーがbindParamやbindValue機能を使用しないように示唆した二答え、中

PDO - bindParam not working

をSQLクエリにパラメータを動的に割り当てることができます。

関連する問題