使用mysql php pdo从数据库返回一个值

Amb*_*ell 24 php mysql pdo

我不是试图使用循环.我只是一行中一列的一个值.我得到了我想要的以下代码,但必须有一个更简单的方法使用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;
Run Code Online (Sandbox Code Playgroud)

这看起来太多了,无法从数据库中获取一个值.:\

Oua*_*die 54

你可以使用fetchColumn():

$q= $conn->query("SELECT name FROM `login_users` WHERE username='$userid'");
$username = $q->fetchColumn();
Run Code Online (Sandbox Code Playgroud)

  • 谢谢@MennovandenHeuvel 将其更改为准备好的声明 (2认同)

ARI*_*ANA 22

http://php.net/manual/en/pdostatement.fetchcolumn.php希望这能解决您的问题.

  • 是的,使用PDO时,`fetchColumn`方法是最佳选择. (2认同)

asp*_*rin 15

您可以为此创建一个函数,并在每次需要单个值时调用该函数

function getSingleValue($tableName, $prop, $value, $columnName)
{
    $q = $conn->query("SELECT `$columnName` FROM `$tableName` WHERE $prop='".$value."'");
    $f = $q->fetch();
    $result = $f[$columnName];
    return $result;
}
Run Code Online (Sandbox Code Playgroud)

然后你可以简单地做:

$singleValue = getSingleValue('login_users', 'username', $userid, 'name'); // will get you the value
Run Code Online (Sandbox Code Playgroud)

因此,您只需创建一次该函数,但可以将其重用于具有不同列名的不同表.

社区编辑: 出于安全原因,请避免连接字符串以形成SQL查询,而是使用预准备语句.

因此,而不是弱势群体

$q = $conn->query("SELECT `$columnName` FROM `$tableName` WHERE $prop='".$value."'");
Run Code Online (Sandbox Code Playgroud)

在预准备语句中使用相应的代码

$q = $conn->prepare('SELECT :columnName FROM :tableName WHERE :property=:value', [
    'columName' => $columnName,
    'tableName' => $tableName,
    'property' => $prop,
    'value' => $value
]);
Run Code Online (Sandbox Code Playgroud)

  • 使用串联来构建数据库查询是危险的.使用PDO准备好的声明要好得多. (9认同)
  • 伙计。只需使用准备好的查询,即使它只是一个示例。初学者可以借鉴! (2认同)