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
returnthe statement$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: