[英]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.