2016-11-17 8 views
-1

if/elseクエリを実行する最善の方法を見つけることができない状況に遭遇しています。まず、SQL文でif/elseを実行できるかどうかはわかりません。以下は現在私が持っているものです。このプロセスを通じて、私はクエリの周りにif/elseを追加しました。 $profile_viewerに等しい - 私はuser_id(上記に記載されていない変数データベース列)の値が作りたいINSERTクエリで/ elseがある場合

それ以外$user_idに等しい場合、基本的に私は何をしたいのか最初のクエリを実行され、それ以外を実行します。だから、

、私はこれを行うことができれば一言で言えば、私はちょうど私の実行を変更する方法がわからないです:

他のクエリのパラメータであることを$profile_viewerを含めること。

$select_img_stmt->execute(array($user_id));

$user_id = (isset($_SESSION['user']) ? $_SESSION['user'] : ""); 
    $profile_viewer = $_GET['user']; 
    if ($profile_viewer == $user_id) { 
     $img_select_sql = " 
      SELECT * 
      FROM profile_img 
      WHERE user_id = ? 
      ORDER BY id DESC 
      LIMIT 1 
     "; 
    } 
    else { 
     //echo "This is not your image"; 
     $img_select_sql = " 
     SELECT * 
     FROM profile_img 
      WHERE user_id = ? 
      ORDER BY id DESC 
      LIMIT 1 
     "; 
    } 
    if ($select_img_stmt = $con->prepare($img_select_sql)) { 
     $select_img_stmt->execute(array($user_id)); 

更新されたコード:1つのクエリですべてこれを行うことについて

$user_id = (isset($_SESSION['user']) ? $_SESSION['user'] : ""); 
    $profile_viewer = $_GET['user']; 
    if ($profile_viewer == $user_id) { 
     /*$img_select_sql = " 
      SELECT * 
      FROM profile_img 
      WHERE user_id = ? 
      ORDER BY id DESC 
      LIMIT 1 
     ";*/ 
     $img_select_sql = " 
      SELECT i.* 
      FROM profile_img i 
      WHERE user_id IN (?, ?) 
      ORDER BY id DESC 
      LIMIT 1; 
     "; 
    } 
    else { 
     //echo "This is not your image"; 
     echo $profile_viewer; 
    } 
    if ($select_img_stmt = $con->prepare($img_select_sql)) { 
     $select_img_stmt->execute(array($user_id, $profile_viewer)); 
+0

これは問題ありません。セッションとGET配列に値が含まれていますか? PHPとクエリを介してすべてのエラー?これを実行するとどうなりますか? –

+0

@ Fred-ii-それはifで動作しますが、elseでは動作しません。 '$ user_id'と' $ profile_viewer'の2つの異なるパラメータが必要です – Paul

+0

私の質問に何が間違っているのかよくわかりません。 – Paul

答えて

0

どのように?

SELECT i.* 
FROM profile_img i 
WHERE user_id IN ($user_id, $profile_viewer) 
ORDER BY (user_id = $user_id) DESC 
LIMIT 1; 

これは、変数値を明確にするためにコードに直接入力しています。もちろん、クエリ文字列を値で囲むのではなく、パラメータを使用することをお勧めします。

+0

あなたのソリューションを試しましたが、コードのelse部分を開始するときにエラーが発生します。私は1つのクエリしか持っていないので、 '$ img_select_sql'を期待しています。私の質問の更新されたコードを見てください。 – Paul

+0

次のエラーは、コードのifセクションにクエリを持つことによるものです。 「通知:未定義変数:img_select_sql in」および「致命的なエラー:「SQLSTATE [42000]:構文エラーまたはアクセス違反:1065クエリーが空です」という条件付きで「キャッチされない例外」PDOExceptionが発生しました。 – Paul

関連する問題