簡體   English   中英

PHP / MySQLi - 如何獲取一行的值並存儲在變量中?

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

我正在瀏覽我的代碼,我正在運行這么多查詢,但它正在變得越來越長。 如果我只想存儲一個帶有值的變量,我必須這樣做:

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;
}

必須有一種更簡單的方法來做到這一點。 我可以這樣做:

$first_sort_id = QUERY HERE
$last_sort_id = QUERY HERE

所以它不必太長,它可以很好而且很短。

有誰知道我需要做些什么來實現這一目標?

第一

如果使用return語句$stmt->close(); 將永遠不會執行。

第二

擺脫兩個變量,你只需要一個變量。 不要被語義含義所迷惑。

第三

一個簡單的重組可能是這樣的:

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