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