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 を使用する必要がない方法があります。クエリには 1 つしかないことがわかっているのに、なぜ配列を使用するのでしょうか。

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();
}

これを頻繁に行う場合 (DB からスカラー値を取得する場合) で、繰り返しコードを繰り返したくない場合は、ラッパー関数を記述するか、ORM フレームワークの 1 つをオプトアウトします。

于 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 に答える