0

我正在运行一个查询,我只需要得到 1 个值。我目前有,

$sql = "SELECT userId FROM UserAccountInfo WHERE loginName = '$userName'";
$result = $con->query($sql);
$row = $result->fetch_array(MYSQLI_NUM);
$userId = $row[0];

我需要一种更短的方法来获取 userId 到一个变量。有一种方法我不必使用 fetch_array 的东西。我知道查询中只有一件事,所以为什么要使用数组。

4

3 回答 3

3

很抱歉对代码的长度感到失望,但您应该使用准备好的语句,而不是插入查询字符串并使您的代码对 sql 注入攻击敞开大门

话虽如此,这部分代码可能看起来像

$sql = "SELECT userId FROM UserAccountInfo WHERE loginName = ?";
if ($stmt = $mysqli->prepare($sql)) {
    $stmt->bind_param('i', $userName);
    $stmt->execute();
    $stmt->bind_result($userId);
    $stmt->fetch();
    $stmt->close();
}

现在,如果您经常这样做(从数据库中获取标量值)并且不想重复代码,那么编写一个包装函数或选择退出 ORM 框架之一。

于 2013-09-11T03:40:04.493 回答
0

在查询末尾添加 LIMIT 子句。

WHERE loginName = '$userName' LIMIT 0,1"
                -------------^^^^^^^^^^-
于 2013-09-11T03:27:43.047 回答
-1

在 SQL 中使用 LIMIT 并使用这个 PHP

$result = $con->query($sql);
$row = mysql_fetch_assoc($result);
$userId = $row['userId'];
于 2013-09-11T03:32:18.897 回答