0

我正在尝试为下面的 MySQL 查询调整以下代码,但不知道如何去做。查询应该只返回一行,我想从该行中的“代码”列中提取数据并将其作为变量传递给我的 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

一起去:

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 回答
0

不要为这种琐碎的操作浪费太多代码。看,它几乎是一整屏长!
如果您在整个代码中需要十几个变量怎么办?
将所有代码封装成辅助函数,然后一行调用:

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