2017-01-06 13 views
0

奇妙な問題をデバッグしようとしています。いくつかのテーブルを結合してさまざまな情報を取り出し、送信されるいくつかの電子メールを取り込むクエリがあります。コードが動作していることを確認するためにいくつかのテスト電子メールを生成しようとすると、このクエリの問題のために電子メールが生成されません。ここでPHPMyAdminではクエリが実行されますが、PHPでは実行されません。コード

は、クエリを実行する機能である:ここでは

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の出力である:この機能は直前に$ PIDの値をチェックし、以前のエコーから

103 //呼び出され、最初の引数として渡されます

PID:103 | UID:24

アレイ:

私はこのクエリと上記の値をとるとするためにそれらを置き換えた場合は?クエリのパラメータをPHPMyAdminで実行します。私が期待したレコードを取得します。

+0

私は数年間しかし、私はあなたが1つの値に多くの値を与えると思います: '$ pd_stmt-> bind_param( 'ii'、$ id、$ uid)'。おそらく '' ii ''を削除しようとしますか? – Renier

+0

あなたの '$ sql-> prepare()' ...に '?' sが不十分で、その文字列引数の最後に ';'を削除してください。 – PHPglue

+0

私は、コードで明らかに間違ったanyithingを見ることができません; - /デバッグ:私は入力文字列の整数バージョンを見てみましょう... 'var_dump(" PID: "、$ id、(int)$ id、" UID: " 、$ uid、(int)$ uid);これらは無効な文字を含んでいる可能性があります。また、「一般的なログ」を使用して、mysqlエンジンがPHPから実際に得ているものを確認します。 –

答えて

0

使用しているSQL ALを記述すると、PDOやMysqliのように見えないため、役に立つでしょう。しかし、私が仮定できることは、両方に似ています。次に、bind_paramのメソッドのどのパラメータを参照する必要がありますか。 PDOには、パラメータ、変数、および変数のタイプがあります。このメソッドのリファレンスをチェックして、ここでより良いbind_valueメソッドがあるかどうか、またはexecuteメソッドが次のような入力パラメータを取得できなかったかどうかを確認してください。http://php.net/manual/de/pdostatement.execute.php

+0

これを調製し、パラメーター化した。 bind_paramは少なくとも2つの引数をとります。最初は引数リストで従うべきvar型のリストで、残りは?sのためのクエリに現れる順序で代入される変数です。 – Geowil

関連する問題