2016-11-17 71 views
-1

我遇到了一种情况,我无法弄清楚运行if/else查询的最佳方式。首先,我不确定我是否可以用sql语句运行if/else。以下是我目前拥有的。通过这个过程,我只在查询周围添加了if/else。If/else for INSERT查询

基本上就是我想要做的是运行第一个查询,如果它等于$user_id否则,运行一样,这是我想要做user_id的价值 - 等于$profile_viewer(数据库列不是上面列出的变量)。

因此,概括地说,如果我能做到这一点,我只是不知道如何修改我的执行:

要包括$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)); 

更新的代码:

$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中起作用,但不起作用。我需要在执行中有两个不同的参数,'$ user_id'和'$ profile_viewer' – 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

我尝试了您的解决方案,但是当我启动我的代码的其他部分时出现错误。由于我只有一个查询,因此需要'$ img_select_sql'。在我的问题中查看更新的代码。 – Paul

+0

以下错误仅来自代码的if部分中的查询。 '注意:未定义的变量:img_select_sql in'和'致命错误:带有消息'SQLSTATE [42000]的未捕获异常'PDOException':语法错误或访问冲突:1065查询为空'用于if条件失败时。 – Paul