php - Pourquoi une instruction SQL ne peut-elle pas extraire les champs ID et Title, mais uniquement le champ Title?
扔个三星炸死你
扔个三星炸死你 2017-06-10 09:47:31
0
2
677

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

扔个三星炸死你
扔个三星炸死你

répondre à tous(2)
淡淡烟草味

Jetez un oeil*换成t1.*

过去多啦不再A梦

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal