suchen

Heim  >  Fragen und Antworten  >  Hauptteil

php - Warum können nicht die Felder „ID“ und „Titel“ aus der SQL-Anweisung extrahiert werden, sondern nur das Feld „Titel“?

SQL-Anweisung

    public function get_radom_article(){
            $table1 = $this->get_table('article') ;
            $sql = 'SELECT * 
    FROM `'.$table1 .'` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `'.$table1 .'`)-(SELECT MIN(id) FROM `'.$table1 .'`))+(SELECT MIN(id) FROM `'.$table1 .'`)) AS id) AS t2 
    WHERE t1.id >= t2.id 
    ORDER BY t1.id LIMIT 10';
     return $this->query_all($sql);
        
    }

Extraktion

                <?php foreach($this->radom_articles AS $key => $val) { ?>
                <li><a  href="article/<?php echo $val['id']; ?>" title="<?php echo $val['title']; ?>"><?php echo  $val['title']; ?></a></li>
                <?php } ?>

Der Titel kann extrahiert werden, aber die ID kann nicht extrahiert werden?
Es gibt keine Fehler in den Titeln dieser extrahierten Daten, aber warum sind alle IDs gleich, das heißt, die ID des entsprechenden Titelfelds wird nicht extrahiert? Was ist mit SQL schief gelaufen? Unter der Anleitung aller Meister

Das Titelfeld ist Titel und das ID-Feld ist ID

扔个三星炸死你扔个三星炸死你2810 Tage vor682

Antworte allen(2)Ich werde antworten

  • 淡淡烟草味

    淡淡烟草味2017-06-10 09:49:31

    你把*换成t1.*看看

    Antwort
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-06-10 09:49:31

    第一:你连表查询的t1.id >= t2.id就已经会出现重复的数据,虽然你的算法看起来这个可能性比较小。
    第二:结果集包含多个id字段,php取出来的结果出现在select后面的最后的id字段会覆盖之前的值,当然也可能查询优化器会改变select后列的顺序也说不定。

    Antwort
    0
  • StornierenAntwort