recherche

Maison  >  Questions et réponses  >  le corps du texte

php - Pourquoi une instruction SQL ne peut-elle pas extraire les champs ID et Title, mais uniquement le champ Title?

Instruction SQL

    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);
        
    }

Extraction

                <?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 } ?>

Le titre peut être extrait mais l'identifiant ne peut pas être extrait ?
Il n'y a aucune erreur dans les titres de ces données extraites, mais pourquoi tous les identifiants sont-ils identiques, c'est-à-dire que l'ID du champ de titre correspondant n'est pas extrait ? Qu'est-ce qui n'a pas fonctionné avec SQL ? Sous la houlette de tous les maîtres

Le champ titre est titre et le champ identifiant est id

扔个三星炸死你扔个三星炸死你2732 Il y a quelques jours633

répondre à tous(2)je répondrai

  • 淡淡烟草味

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

    Jetez un oeil*换成t1.*

    répondre
    0
  • 过去多啦不再A梦

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

    Premièrement : si t1.id >= t2.id dans votre requête de table de jointure, les données en double apparaîtront déjà, bien que votre algorithme semble moins susceptible de le faire.
    Deuxième : le jeu de résultats contient plusieurs champs d'identifiant. Le dernier champ d'identifiant après la sélection dans le résultat extrait par PHP écrasera la valeur précédente. Bien entendu, l'optimiseur de requête peut également modifier l'ordre des colonnes après la sélection.

    répondre
    0
  • Annulerrépondre