2016-12-05 2 views
0

PHPを使用してデータベースにクエリを実行しています。私はプログラムで多くの質問を実行するのに成功していますが、最近の質問が私に問題をもたらしました。mysqli_queryの書式設定

これは正常に実行され、データベース上でHeidiSQLで直接使用された場合に正しい出力を生成します。私はPHPの変数の実際のチーム名をスワップアウト、次のようにプログラムでそれを実装してみました。このバージョンで

$result = mysqli_query($link, "SELECT Champion, RunnerUp 
       FROM playoffs 
       WHERE Champion = '$champion' 
       AND (RunnerUp = '$RunnerUp' OR RunnerUp = '$RunnerUp2')") ; 

、代わりになるように見える、括弧の組み込みセットはそのように識別されていないようです見積もりの​​一部。このバージョンは出力を生成しませんでした。カッコの第2セットを削除

$result = mysqli_query($link, "SELECT Champion, RunnerUp 
       FROM playoffs 
       WHERE Champion = '$champion' 
       AND RunnerUp = '$RunnerUp' OR RunnerUp = '$RunnerUp2'") ; 

、それは私がいつでも$チャンピオンと$準優勝の試合のためにタプル与えて、実行しますが、ロジックが異なっ読み込むので、希望の結果が得られていない次のよう

は、私はそれを修正しましたまたは$ RunnerUp2が2位になるときはいつでも。もともと私がPHPを使用することを意図していたので、このステートメントを実行するにはどうしますか?

UPDATEは:変数にクエリを入れた後、次のように:

$query = "SELECT Champion, RunnerUp 
       FROM playoffs 
       WHERE Champion = '$champion' 
       AND (RunnerUp = '$RunnerUp' OR RunnerUp = '$RunnerUp2')"; 

、それをエコー、私は

SELECT Champion, RunnerUp FROM playoffs WHERE Champion = '' AND (RunnerUp = 'Montreal Canadiens' OR RunnerUp = 'Toronto St. Patricks') 

だからそれが何らかの理由のように見える出力、私のチャンピオン変数を決して得ませんでした何かを受け取る。これは元々それを呼び出すとき、それは「チャンピオン」の代わりに「チャンピオン」と呼ばれたからです。

+2

'$ query'という変数の中にクエリを置くと、' echo $ query; 'を実行して、期待通りにクエリが表示されるかどうかを確認できます。 '$ champion'、' $ RunnerUp'、または '$ RunnerUp2'変数の末尾に余白があるかもしれません。それから、mysqli_query($ link、$ query);と呼ばれます。問題が解決しない場合は、問題を更新してください。 – varlogtim

+0

これは、私がこれらの行の前に書式設定エラーを起こした場所を把握するのに役立ちました。ありがとう – user3068177

答えて

0

私は以前に間違っていた場所を見つけた後、それがこのコードことが表示されます:

$query = "SELECT Champion, RunnerUp 
      FROM playoffs 
      WHERE Champion = '$champion' 
      AND (RunnerUp = '$RunnerUp' OR RunnerUp = '$RunnerUp2')"; 

意志実際の仕事インチ上記のコメントで述べたように、変数にクエリを追加して呼び出す方がクリーンです。

+1

'print_r'はコードをデバッグしようとするとあなたの友人です! :) – varlogtim