28

ループを使用しようとしていません。1行の1列から1つの値だけです。次のコードで必要なものが得られましたが、PDO を使用するより簡単な方法が必要です。

try {
        $conn = new PDO('mysql:host=localhost;dbname=advlou_test', 'advlou_wh', 'advlou_wh');
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch(PDOException $e) {
        echo 'ERROR: ' . $e->getMessage();
    }

$userid = 1;

$username = $conn->query("SELECT name FROM `login_users` WHERE username='$userid'");
$username2 = $username->fetch();
$username3 = $username2['name'];

echo $username3;

これは、データベースから 1 つの値を取得するには行が多すぎるように見えます。:\

4

3 に答える 3

62

使用できますfetchColumn()

$q= $conn->prepare("SELECT name FROM `login_users` WHERE username=?");
$q->execute([$userid]);
$username = $q->fetchColumn();
于 2014-12-01T00:41:31.223 に答える
20

このための関数を作成し、単一の値が必要になるたびにその関数を呼び出すことができます。セキュリティ上の理由から、文字列を連結して SQL クエリを形成することは避けてください。代わりに、値に対して準備済みステートメントを使用し、SQL 文字列内の他のすべてをハードコーディングします。特定の列を取得するには、クエリで明示的にリストするだけです。メソッドは、fetchColumn()クエリから単一の値を取得するのにも役立ちます

function getSingleValue($conn, $sql, $parameters)
{
    $q = $conn->prepare($sql);
    $q->execute($parameters);
    return $q->fetchColumn();
}

次に、次のように簡単に実行できます。

$name = getSingleValue($conn, "SELECT name FROM login_users WHERE id=?", [$userid]); 

そして、それはあなたに望ましい値をもたらします。

したがって、その関数を一度だけ作成する必要がありますが、別のクエリで再利用できます。

この回答は、セキュリティ上の懸念に対処するためにコミュニティで編集されています

于 2012-08-13T05:04:20.647 に答える
1

車に乗り込み、店に行き、群衆の中を戦い、必要な牛乳の瓶を手に取り、家に帰るまで戦うのは、あまりにも大変な仕事です。

これらの段階はすべて必要であり、その後の各段階は、前に実行された段階に依存します。

これを繰り返し行う場合は、必ず関数をラップして再利用し、1 回のgetMyValue()呼び出しに減らすことができますが、バックグラウンドではすべてのコードがまだ存在している必要があります。

于 2012-08-13T04:29:18.103 に答える