0

以下の MySQL クエリに次のコードを適用しようとしていますが、その方法がわかりません。クエリは 1 行だけを返す必要があります。この行の「コード」列からデータを抽出し、それを変数として PHP スクリプトに渡します。

/* prepare statement */
if ($stmt = $mysqli->prepare("SELECT Code from Clients where Name='Jane'")) {
    $stmt->execute();

    /* bind variables to prepared statement */
    $stmt->bind_result($code);

    /* fetch values */
    while ($stmt->fetch()) {
        printf($code);
    }

    /* close statement */
    $stmt->close();
}
4

4 に答える 4

1

http://php.net/manual/en/mysqli.prepare.phpに基づいて作業していると思います。ただし、パラメーターのバインドについてもフォローアップする必要があります。

/* prepare statement */
if ($stmt = $mysqli->prepare("SELECT Code from Clients where Name=?")) {

    /* bind query parameters to prepared statement */
    $stmt->bind_param("s", 'Jane');

    $stmt->execute();

    /* bind result variables to prepared statement */
    $stmt->bind_result($code);

    /* fetch values */
    if ($stmt->fetch()) {
        printf('Code: %s', $code);
    } else {
        print("Client code was not found");
    }

    /* close statement */
    $stmt->close();
}

ここでステートメントを準備しているので、パラメーターを個別にバインドする必要があります。

于 2013-02-18T16:04:29.820 に答える
0

このような些細な操作のためにあまり多くのコードを無駄にしないでください。ほら、それはほぼ全画面の長さです!
コード全体で多数の変数が必要な場合はどうなりますか?
すべてのコードをヘルパー関数にカプセル化してから、1行で呼び出します。

$code = $db->getOne("SELECT Code from Clients where Name='Jane'");
于 2013-02-18T16:54:27.610 に答える
0

一緒に行く:

if ($stmt = $mysqli->prepare("SELECT Code from `Clients` where Name = 'Jane' LIMIT 1")) {
    $stmt->execute();
    $stmt->bind_result($code);
    $stmt->fetch();
    $stmt->close();
}

スクリプトの最後に$code、列のデータが含まれますCode

于 2013-02-18T15:58:37.957 に答える
0

コードを次のように変更できます。

$value = $stmt->fetch();

'limit 1'また、データベースから単一の値が必要であることがわかっている場合は、SQL ステートメントの最後でa を実行することで、少し高速化できます。

于 2013-02-18T16:01:08.737 に答える