如何选择MySQL表中的列并使用PHP MySQL\u结果获取值?

如何选择MySQL表中的列并使用PHP MySQL\u结果获取值?,php,mysql,sql,Php,Mysql,Sql,我有下面的图表 //reference type table +---+-----------+---------+ |ID |Article_ID |Ref_Types| +---+-----------+---------+ | 1 | 1 | article | | 2 | 1 | book | | 3 | 1 | article | | 4 | 1 | article | | 5 | 2 | book

我有下面的图表

//reference type table
+---+-----------+---------+
|ID |Article_ID |Ref_Types|
+---+-----------+---------+
| 1 | 1         | article |
| 2 | 1         | book    |
| 3 | 1         | article |
| 4 | 1         | article |
| 5 | 2         | book    |
+---+-----------+---------+
//book references table
+---+-----------+--------+
|ID |Article_ID |Title   |
+---+-----------+--------+
| 1 | 1         | book1  |
| 2 | 1         | book2  |
| 3 | 2         | book3  |
| 4 | 2         | book4  |
| 5 | 2         | book5  |
+---+-----------+--------+
//article references table
+---+-----------+-----------+
|ID |Article_ID |Title      |
+---+-----------+-----------+
| 1 | 1         | article1  |
| 2 | 1         | article2  |
| 3 | 2         | article3  |
| 4 | 2         | article4  |
| 5 | 2         | article5  |
+---+-----------+-----------+
  • 我必须查看第一个表并检查引用,它是哪种类型的
  • 对于每种引用类型,我都从相关表中获取引用表
  • 我必须按顺序输出,如表1所示
  • 1: 2: 但是,
    $sqlarticle
    似乎不起作用

    我想显示为:

    +-----------+----------+
    |Article_ID |Reference |
    +-----------+----------+
    | 1         | article1 |
    | 1         | book1    |
    | 1         | article2 |
    | 1         | article3 |
    +-----------+----------+
    
    我知道这是一个很长的问题,对于专家或有经验的人来说,这是一个非常琐碎的问题,但这正是我被困的地方

    SELECT 
        * 
    FROM 
        reftypes R
    WHERE 
        Article_ID=your_id 
    LEFT JOIN books B ON (B.Article_ID = R.Article_ID AND R.Ref_Types = 'book')
    LEFT JOIN articles A ON (A.Article_ID = R.Article_ID AND R.Ref_Types = 'article')
    ORDER BY
        R.id ASC;
    
    我认为,即使数据库建模错误

    那么followin模型呢

          $result=mysqli_query("select ref_types from reference type");
    while($row=mysqli_fetch_array($result))
    {
        $table=$row[0];
        $result1=mysqli_query("select * from $table");
            while($row1=mysqli_fetch_array($result1))
            {
            var_dump($row1);
            }
    }
    
    “尽管提问者尤其应该尊重任何形式的努力和投入,但我很感激——我不明白为什么有些人会认为提问者和他们自己一样消息灵通或经验丰富,或者更糟糕的是,从更高的层次上说。“”

    不管怎样,我的问题是要一个接一个地获得价值观,下面是我是如何做到的

    $data=array();
    $sql=mysql_query("SELECT * FROM reftypes 
    WHERE Article_ID=1 ORDER BY ID ASC");
    while($row = mysql_fetch_array($sql)){
         $data[]=$row[2]; // i store in an array so that i can use later..
         }
    $articlecount=0;
    $bookcount=0;
    foreach ($data as $value) {
           switch ($value) {
             case "article":
               $sqlarticle=mysql_query("SELECT RefArticleTitle 
                       FROM ref_article 
                       WHERE $article_ID=Article_ID 
                       ORDER BY ID ASC");
               $articles=  mysql_result($sqlarticle, $articlecount);
               echo $articles;
               echo "\n";
               $articlecount++;
               break;
               case "book":
               $sqlbook=mysql_query("SELECT RefBookName 
                       FROM ref_book 
                       WHERE $article_ID=Article_ID 
                       ORDER BY ID ASC");
               $books=  mysql_result($sqlbook, $bookcount);
               echo $books;
               echo "\n";
               $bookcount++;
               break;
    ...
    ...
    
    结果,我得到了我所需要的

    +-----------+----------+
    |Article_ID |Reference |
    +-----------+----------+
    | 1         | article1 |
    | 1         | book1    |
    | 1         | article2 |
    | 1         | article3 |
    +-----------+----------+
    

    感谢对该主题感兴趣的人。

    这是PHP吗?请正确标记。
    reference\u type
    表的用途是什么?你们真的应该规范化你们的数据库来解决这些问题。嗨,费埃拉,因为当用户添加新的引用时,他首先选择它是哪种类型。这是必需的,因为文章和书有不同的属性。为什么会有mysql\u结果?为什么不能使用熟悉的mysql\u fetch\u数组呢?您想要一个奇怪的结果,因为对于article id=1,您有book1、book2、article1、article2。这真是“原始”。你应该解释“加入”是什么@YvesMartin“应该”?这里是兵营,你是指挥官吗?如果没有,请改变音调。顺便说一句,欢迎你自己解释任何你认为必要的东西。对不起-我是说“五月”-我正在写一个答案,当我看到你答案的“第一版”时放弃了。。。SQL新手可能不理解这样的请求。那么我的评论是什么呢?你是如何连接这些表的?
    $data=array();
    $sql=mysql_query("SELECT * FROM reftypes 
    WHERE Article_ID=1 ORDER BY ID ASC");
    while($row = mysql_fetch_array($sql)){
         $data[]=$row[2]; // i store in an array so that i can use later..
         }
    $articlecount=0;
    $bookcount=0;
    foreach ($data as $value) {
           switch ($value) {
             case "article":
               $sqlarticle=mysql_query("SELECT RefArticleTitle 
                       FROM ref_article 
                       WHERE $article_ID=Article_ID 
                       ORDER BY ID ASC");
               $articles=  mysql_result($sqlarticle, $articlecount);
               echo $articles;
               echo "\n";
               $articlecount++;
               break;
               case "book":
               $sqlbook=mysql_query("SELECT RefBookName 
                       FROM ref_book 
                       WHERE $article_ID=Article_ID 
                       ORDER BY ID ASC");
               $books=  mysql_result($sqlbook, $bookcount);
               echo $books;
               echo "\n";
               $bookcount++;
               break;
    ...
    ...
    
    +-----------+----------+
    |Article_ID |Reference |
    +-----------+----------+
    | 1         | article1 |
    | 1         | book1    |
    | 1         | article2 |
    | 1         | article3 |
    +-----------+----------+