PHP / MySQLi - Как получить значение одной строки и сохранить в переменной? - PullRequest
0 голосов
/ 03 января 2012

Я просматриваю свой код и выполняю так много запросов, что он становится длинным. Если я просто хочу сохранить одну переменную со значением, я должен сделать это:

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

Так что это не должно быть так долго, это может быть красиво и коротко.

Кто-нибудь знает, что мне нужно для этого сделать?

1 Ответ

2 голосов
/ 03 января 2012

Первый

Если вы используете 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...