首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL将数据读取为一行

问MySQL将数据读取为一行
EN

Stack Overflow用户
提问于 2014-09-18 02:35:00
回答 2查看 58关注 0票数 1

这里有点混乱,例如,我有这样的用户表:

代码语言:javascript
复制
--------------------------------
|  id  | name  | pass  | email |
--------------------------------
|   1  | a     | a     | a@a.a |
--------------------------------
|   2  | b     | b     | b@b.b |
--------------------------------
|   3  | c     | c     | c@c.c |
--------------------------------

我可以使用这个命令

代码语言:javascript
复制
    $query = mysqli_query($con, "SELECT * FROM user");
    $row = mysqli_fetch_array($query, MYSQLI_ASSOC);
    $username = $row['name'];
    $password = $row['pass'];

但是当我有这样的选项表时会遇到问题

代码语言:javascript
复制
------------------------------
|  id  | name      | content |
------------------------------
|   1  | username  | a       |
------------------------------
|   2  | password  | a       |
------------------------------
|   3  | email     | a@a.a   |
------------------------------
|   4  | url       | a.com   |
------------------------------

如何查询此表?关键是我想要创建options表,但不是向右添加数据,而是将其底部设置为"name value = content value“。

代码语言:javascript
复制
    username = a;
    password = a;
    email = a@a.a;
    url = a.com;

我真的不知道该怎么解释,这对我来说是新的

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-18 02:49:38

您可以在PHP中使用可变变量进行实验。例如,在上面的示例中,尝试如下所示:

代码语言:javascript
复制
$username = '';

// query your OPTIONS table here
// assuming you've called it 'user' as described in your question
$query = mysqli_query($con, "SELECT * FROM user");
while ($row = mysqli_fetch_array($query, MYSQLI_ASSOC)) {
    // note the extra $ prefix before $row['name']
    // this creates the variable from the contents of $row['name']
    $$row['name'] = $row['content'];
}

echo $username; // should return 'a'

简而言之,行的" name“列保存变量名,"content”列保存值。

票数 3
EN

Stack Overflow用户

发布于 2014-09-18 03:40:06

options表是关系数据库系统中常用的抽象,称为实体-属性值。下面是一篇很可爱的文章:

http://mikesmithers.wordpress.com/2013/12/22/the-anti-pattern-eavil-database-design

下面是如何查询您的options表:

代码语言:javascript
复制
<?php
$query = mysqli_query($con, "SELECT * FROM options");
?>

下面是如何将信息捕获到PHP数组中:

代码语言:javascript
复制
<?php
$user = array();
while ($row = mysqli_fetch_array($query, MYSQLI_ASSOC)) {
    $user[ $row['name'] ] = $row['content'];
}
var_dump( $user );
?> 

下面是如何访问数据:

代码语言:javascript
复制
<html>
<p>username: <?= $user['username'] ?></p>
<p>password: <?= $user['password'] ?></p>
</html>

注意,您可能需要向options表中添加一个user_id列。这就是您的EAV表能够支持多个用户的方式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25903301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档