【问题标题】:PHP function to extract a field value from a databasePHP函数从数据库中提取字段值
【发布时间】:2016-04-11 13:11:29
【问题描述】:

我正在尝试使用 php 函数获取 mysql 数据库的值。 我有一个这样的数据库:

NAME     | EMAIL                | PASSWORD  | OTHER
-------------------------------------------------------
example  | example@example.com  | password  | other
-------------------------------------------------------
example2 | example2@example.com | password2 | other2

在我的 PHP 文件中,我尝试使用此函数:

function selectUserField($email, $field, $connection){
    $select_user = "SELECT '$field' FROM users WHERE email='$email' LIMIT 1";
    $result = mysqli_query($connection, $select_user);
    $value = mysqli_fetch_assoc($result);
    return $value[$field];
}

//And I try to echo the result of the function
$connection = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

echo selectUserField("example@example.com", "name", $connection);

但结果我只得到了字段名称而不是它的内容(对于这个例子,我得到“NAME”而不是“example”)。如何获取数据库单元格的内容?

【问题讨论】:

  • 在列名中加上引号!!
  • 因为你要求 MySQL 通过用单引号括起来来返回文本 'NAME',所以字段名称应该用反引号括起来或者根本没有,所以 mysql 知道你想要一个字段值而不是给定的文本。
  • 哦,抱歉这个语法问题。 :(

标签: php mysql mysqli


【解决方案1】:

试试这个

function selectUserField($email, $field, $connection){
    $select_user = "SELECT `$field` FROM users WHERE `email`='$email' LIMIT 1"; //wrap it with ` around the field or don't wrap with anything at all
    $result = mysqli_query($connection, $select_user);
    $value = mysqli_fetch_assoc($result);
    return $value[$field];
}

//And I try to echo the result of the function
$connection = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

echo selectUserField("example@example.com", "name", $connection);

【讨论】:

    【解决方案2】:

    $field 周围没有引号。

    "SELECT $field FROM users WHERE email='$email' LIMIT 1";
    

    【讨论】:

    • 是的,它有效。谢谢! (对不起,我认为这个愚蠢的问题)
    • @paolobasso 请准备好你的陈述,不要只选择用户可以更改的电子邮件,这很容易受到 SQL 注入的攻击。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-12
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 2019-07-18
    • 2014-03-18
    • 1970-01-01
    相关资源
    最近更新 更多