PHP 从数据库中选择用户名等于 X 的字段

Posted

技术标签:

【中文标题】PHP 从数据库中选择用户名等于 X 的字段【英文标题】:PHP Select fields from database where username equals X 【发布时间】:2013-06-27 05:38:01 【问题描述】:

我在 php 中从用户名等于 $myusername 的数据库中选择 Infomation 时遇到问题

我可以让它使用从登录页面到登录页面的会话来回显用户名。

但我希望能够从该数据库中选择“bio”和“email”之类的内容,并将它们放入名为 $bio 和 $email 的变量中,以便我可以回显它们。

这是数据库的样子:

有什么想法吗?:/

【问题讨论】:

'equals' 运算符是一个非常严格的运算符。您确定输入与表中的用户名完全相同吗?另外,您能否发布一些代码来检索数据库条目? 永远不要将密码存储为纯文本。对它进行哈希处理只需很少的努力,它可以像使用 password_hash 函数(如果使用 php5.5+)或包含诸如 phpass 之类的库一样简单) 【参考方案1】:

您应该连接到您的数据库,然后像这样获取行:

// DATABASE INFORMATION
$server = 'localhost';
$database = 'DATABASE';
$dbuser = 'DATABASE_USERNAME';
$dbpassword = 'DATABASE_PASSWORD';

//CONNECT TO DATABASE
$connect = mysql_connect("$server", "$dbuser", "$dbpassword")
    OR die(mysql_error());
   mysql_select_db("$database", $connect);
//ALWAYS ESCAPE STRINGS IF YOU HAVE RECEIVED THEM FROM USERS
$safe_username = mysql_real_escape_string($X);
//FIND AND GET THE ROW
$getit = mysql_query("SELECT * FROM table_name WHERE username='$safe_username'", $connect);
$row = mysql_fetch_array($getit);

//YOUR NEEDED VALUES
$bio = $row['bio'];
$email = $row['email'];

注1:

密码不要使用纯文本,始终使用盐对密码进行哈希处理

注2:

我为您的代码使用了 MYSQL_QUERY,因为我不知道 PDO 或 Mysqli,在 MYSQL 中转义已经足够了,但考虑使用 PDO 或 Mysqli,因为我不知道它们,所以我无法为您编写代码

【讨论】:

你应该考虑学习准备好的陈述......这是一个非常糟糕的答案【参考方案2】:

简单的 PDO 示例。

创建与数据库的连接。

$link = new PDO("mysql:host=$db_server;dbname=$db_name", $db_user, $db_pw, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

在创建(准备)和执行 SQL 脚本时使用 $link 变量。

$stmt = $link->prepare('insert into `history` (`user_id`) values(:userId)');
$stmt->execute(array(':userId' => $userId));

下面的代码将读取数据。请注意,此代码只期望返回一条记录(带有 2 个数据元素),因此我将返回的任何内容存储到单个变量(每个数据元素)$webId$deviceId

$stmt = $link->prepare('select `web_id`, `device_id` from `history` where `user_id` = :userId');
$stmt->execute(array(':userId' => $userId));
while($row = $stmt->fetch()) 
    $webId = $row["web_id"];
    $deviceId = $row["device_id"];

【讨论】:

【参考方案3】:

从图片中我可以看到您正在使用 phpMyAdmin - 一个用于处理 MySQL 数据库的工具。您首先必须连接到 MySql 服务器,然后选择要使用的数据库。如下所示:

<?php
$username = "your_name"; //Change to your server's username
$password = "your_password"; //Change to your server's password
$database = "your_database" //Change to your database name
$hostname = "localhost"; // Change to the location of your server (this will prolly be the same for you I believe tho 

$dbhandle = mysql_connect($hostname, $username, $password)
  or die("Unable to connect to MySQL");
echo "Connected to MySQL<br>";

$selected = mysql_select_db($database, $dbhandle)
  or die("Could not select examples");
?>

那么你可以这样写:

<?php
$bio = mysql_query("SELECT bio FROM *your_database_table_name* WHERE username='bob' AND id=1");
?>

<?php
$email = mysql_query("SELECT email FROM *your_database_table_name* WHERE username='bob' AND id=1");
?>

其中 *your_database_table_name* 是您选择的数据库中您尝试查询的表。

当我回答你的问题时,我引用了这个网站:http://webcheatsheet.com/PHP/connect_mysql_database.php。因此,检查它也可能会有所帮助。

【讨论】:

以上是关于PHP 从数据库中选择用户名等于 X 的字段的主要内容,如果未能解决你的问题,请参考以下文章

PHP,MySQL 选择,按字段排序并分组

如何获得满足 mongodb 中字段所有条件的用户?

mysql php从2个表中选择字段,具有相同的字段名称[重复]

从选择字段Javascript获取默认值

PHP如果变量等于下拉列表中的值,则将“选定”属性添加到选项

在 php mysql 中选择选项时用值填充输入字段