简体   繁体   English

PHP / MySQLi - 如何获取一行的值并存储在变量中?

[英]PHP / MySQLi - How to get value of one row and store in a variable?

I am going through my code and I am running so many queries it is getting long. 我正在浏览我的代码,我正在运行这么多查询,但它正在变得越来越长。 If I just want to store a single variable with a value, I have to do this: 如果我只想存储一个带有值的变量,我必须这样做:

switch($type) {
    case "next":
    if ($stmt = $mysqli->prepare("SELECT sort_order FROM user_slides WHERE user_id = ? AND sort_order > ? ORDER BY sort_order LIMIT 1")) {
        $stmt->bind_param('is', $user_id, $sortId);
        $stmt->execute();
        $stmt->bind_result($next_sort_id);
        $stmt->store_result();
        $stmt->fetch();

        return $next_sort_id;

        $stmt->close();
    }
    break;

    case "first":
    if ($stmt = $mysqli->prepare("SELECT MIN(sort_order) as max_slides FROM user_slides WHERE user_id = ?")) {
        $stmt->bind_param('i', $user_id);
        $stmt->execute();
        $stmt->bind_result($first_sort_id);
        $stmt->store_result();
        $stmt->fetch();

        return $first_sort_id;

        $stmt->close();
    }
    break;

    case "last":
    if ($stmt = $mysqli->prepare("SELECT MAX(sort_order) as max_slides FROM user_slides WHERE user_id = ?")) {
        $stmt->bind_param('i', $user_id);
        $stmt->execute();
        $stmt->bind_result($last_sort_id);
        $stmt->store_result();
        $stmt->fetch();

        return $last_sort_id;

        $stmt->close();
    }
    break;
}

There has to be an easier way to do this. 必须有一种更简单的方法来做到这一点。 Where I can just do it like this: 我可以这样做:

$first_sort_id = QUERY HERE
$last_sort_id = QUERY HERE

So it doesn't have to be so long, it can be nice and short. 所以它不必太长,它可以很好而且很短。

Does anyone know what I need to do to accomplish that? 有谁知道我需要做些什么来实现这一目标?

First 第一

If you use return the statement $stmt->close(); 如果使用return语句$stmt->close(); will be never executed. 将永远不会执行。

Second 第二

Get rid of two vars, you just need one. 摆脱两个变量,你只需要一个变量。 Don't get fooled by semantic meanings. 不要被语义含义所迷惑。

Third 第三

A simple reorganization could be this: 一个简单的重组可能是这样的:

switch($type)
{
   case "next":
      $Query = "SELECT sort_order";
   break;
   case "first":
      $Query = "SELECT MIN(sort_order)";
   break;
   case "last":
      $Query = "SELECT MAX(sort_order)";
   break;
}

if ($stmt = $mysqli->prepare("$Query as max_slides FROM user_slides WHERE user_id = ?"))
{
      $stmt->bind_param('i', $user_id);
      $stmt->execute();
      $stmt->bind_result($value);
      $stmt->store_result();
      $stmt->fetch();
      $stmt->close();

      return $value;
}
else
   return NULL;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM