奇妙な問題をデバッグしようとしています。いくつかのテーブルを結合してさまざまな情報を取り出し、送信されるいくつかの電子メールを取り込むクエリがあります。コードが動作していることを確認するためにいくつかのテスト電子メールを生成しようとすると、このクエリの問題のために電子メールが生成されません。ここで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で実行します。私が期待したレコードを取得します。
私は数年間しかし、私はあなたが1つの値に多くの値を与えると思います: '$ pd_stmt-> bind_param( 'ii'、$ id、$ uid)'。おそらく '' ii ''を削除しようとしますか? – Renier
あなたの '$ sql-> prepare()' ...に '?' sが不十分で、その文字列引数の最後に ';'を削除してください。 – PHPglue
私は、コードで明らかに間違ったanyithingを見ることができません; - /デバッグ:私は入力文字列の整数バージョンを見てみましょう... 'var_dump(" PID: "、$ id、(int)$ id、" UID: " 、$ uid、(int)$ uid);これらは無効な文字を含んでいる可能性があります。また、「一般的なログ」を使用して、mysqlエンジンがPHPから実際に得ているものを確認します。 –