web-dev-qa-db-fra.com

Comment obtenir toutes les valeurs d'une colonne en utilisant PHP?

J'ai cherché cela partout, mais je ne trouve toujours pas de solution: comment obtenir toutes les valeurs d'une colonne mySQL et les stocker dans un tableau?

Par exemple: Nom de la table: Clients Noms de colonnes: ID, Nom # de rangées: 5

Je veux obtenir un tableau de tous les 5 noms dans ce tableau. Comment je fais pour faire ça? J'utilise PHP et j'essayais simplement de:

SELECT names FROM Customers

et ensuite utiliser le 

mysql_fetch_array

Fonction PHP pour stocker ces valeurs dans un tableau.

27
Gbert90

Notez que cette réponse est obsolète! L'extension mysql n'est plus disponible telle quelle à partir de PHP7. Si vous voulez utiliser les anciennes fonctions mysql dans PHP7, vous devrez compiler ext/mysql à partir de PECL. Voir les autres réponses pour des solutions plus récentes.


Cela fonctionnerait, voir plus de documentation ici: http://php.net/manual/en/function.mysql-fetch-array.php

$result = mysql_query("SELECT names FROM Customers");
$storeArray = Array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    $storeArray[] =  $row['names'];  
}
// now $storeArray will have all the names.
28
DhruvPathak

Voici un moyen simple de faire cela en utilisant _ PDO ou mysqli

$stmt = $pdo->prepare("SELECT Column FROM foo");
// careful, without a LIMIT this can take long if your table is huge
$stmt->execute();
$array = $stmt->fetchAll(PDO::FETCH_COLUMN);
print_r($array);

ou, en utilisant mysqli

$stmt = $mysqli->prepare("SELECT Column FROM foo");
$stmt->execute();
$array = [];
foreach ($stmt->get_result() as $row)
{
    $array[] = $row['column'];
}
print_r($array);

Array
(
    [0] => 7960
    [1] => 7972
    [2] => 8028
    [3] => 8082
    [4] => 8233
)
28

J'utiliserais une connexion mysqli pour me connecter à la base de données. Voici un exemple:

$connection = new mysql("127.0.0.1", "username", "password", "database_name", 3306);

L'étape suivante consiste à sélectionner les informations. Dans ton cas je ferais:

$query = $connection->query("SELECT `names` FROM `Customers`;");

Et finalement nous faisons un tableau à partir de tous ces noms en tapant:

$array = Array();
while($result = $query->fetch_assoc()){
    $array[] = $result['names'];
}

print_r($array);

Donc, ce que j'ai fait dans ce code: J'ai sélectionné tous les noms de la table en utilisant une requête mysql. Ensuite, j'utilise une boucle while pour vérifier si la requête $ a une valeur suivante. Si c'est le cas, la boucle while continue et ajoute cette valeur au tableau '$ array'. Sinon la boucle s'arrête. Et enfin, j'imprime le tableau en utilisant la méthode 'print_r' afin que vous puissiez voir que tout fonctionne. J'espère que cela a été utile.

4
Krijn Toet

Puisque mysql_ * sont obsolètes, voici la solution utilisant mysqli .

$mysqli = new mysqli('Host', 'username', 'password', 'database');
if($mysqli->connect_errno>0)
{
  die("Connection to MySQL-server failed!"); 
}
$resultArr = array();//to store results
//to execute query
$executingFetchQuery = $mysqli->query("SELECT `name` FROM customers WHERE 1");
if($executingFetchQuery)
{
   while($arr = $executingFetchQuery->fetch_assoc())
   {
        $resultArr[] = $arr['name'];//storing values into an array
   }
}
print_r($resultArr);//print the rows returned by query, containing specified columns

Il existe un autre moyen de faire cela en utilisantPDO

  $db = new PDO('mysql:Host=host_name;dbname=db_name', 'username', 'password'); //to establish a connection
  //to fetch records
  $fetchD = $db->prepare("SELECT `name` FROM customers WHERE 1");
  $fetchD->execute();//executing the query
  $resultArr = array();//to store results
  while($row = $fetchD->fetch())
  {
     $resultArr[] = $row['name'];
  }
  print_r($resultArr);
1
A J

Tout d’abord, c’est uniquement pour les développeurs avancés. Ceux qui sont tous débutants en php n’utilisent pas cette fonction si vous utilisez un énorme projet dans le noyau php, utilisez cette fonction.

function displayAllRecords($serverName, $userName, $password, $databaseName,$sqlQuery='')
{
    $databaseConnectionQuery =  mysqli_connect($serverName, $userName, $password, $databaseName);
    if($databaseConnectionQuery === false)
    {
        die("ERROR: Could not connect. " . mysqli_connect_error());
        return false;
    }

    $resultQuery = mysqli_query($databaseConnectionQuery,$sqlQuery);
    $fetchFields = mysqli_fetch_fields($resultQuery);
    $fetchValues = mysqli_fetch_fields($resultQuery);

    if (mysqli_num_rows($resultQuery) > 0) 
    {           

        echo "<table class='table'>";
        echo "<tr>";
        foreach ($fetchFields as $fetchedField)
         {          
            echo "<td>";
            echo "<b>" . $fetchedField->name . "<b></a>";
            echo "</td>";
        }       
        echo "</tr>";
        while($totalRows = mysqli_fetch_array($resultQuery)) 
        {           
            echo "<tr>";                                
            for($eachRecord = 0; $eachRecord < count($fetchValues);$eachRecord++)
            {           
                echo "<td>";
                echo $totalRows[$eachRecord];
                echo "</td>";               
            }
            echo "<td><a href=''><button>Edit</button></a></td>";
            echo "<td><a href=''><button>Delete</button></a></td>";
            echo "</tr>";           
        } 
        echo "</table>";        

    } 
    else
    {
      echo "No Records Found in";
    }
}

Tout est maintenant défini. Passez les arguments comme pour Example

$ queryStatment = "SELECT * From USERS"; $ testing = displayAllRecords ('hôte local', 'racine', 'racine @ 123', 'email', $ queryStatment);

Ici 

localhost indique le nom de la Host,

root indique le nom d'utilisateur pour database

root@123 indique le password for the database

$queryStatment pour generating Query

j'espère que ça aide

0
Manojkiran.A

Comment rétablir les fonctions MySQL dans PHP 7
Étape 1

Commencez par récupérer la source d’extension mysql qui a été supprimée en mars:

https://github.com/php/php-src/tree/PRE_PHP7_EREG_MYSQL_REMOVALS/ext/mysql

Étape 2

Puis éditez votre php.ini

Quelque part dans la section "Extensions" ou "MySQL", ajoutez simplement cette ligne:

extension = /usr/local/lib/php/extensions/no-debug-non-zts-20141001/mysql.so

Étape 3

Les fonctions de redémarrage PHP et de mysql_ * devraient maintenant fonctionner à nouveau. 

Étape 4

Désactivez tous les avertissements obsolètes, y compris ceux de mysql_ *:

error_reporting(E_ALL ^ E_DEPRECATED);

Maintenant, le code ci-dessous vous aide:

$result = mysql_query("SELECT names FROM Customers");
$Data= Array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
{
        $Data[] =  $row['names'];  
}

Vous pouvez également obtenir toutes les valeurs dans la colonne en utilisant mysql_fetch_assoc

$result = mysql_query("SELECT names FROM Customers");
    $Data= Array();
    while ($row = mysql_fetch_assoc($result)) 
    {
            $Data[] =  $row['names'];  
    }

Cette extension était obsolète dans PHP 5.5.0 et supprimée dans PHP 7.0.0. À la place, vous devez utiliser l’extension MySQLi ou PDO_MySQL. 

Référence


VOUS POUVEZ UTILISER MYSQLI ALTERNATIVE OF MYSQL EASY WAY


*

<?php
$con=mysqli_connect("localhost","my_user","my_password","my_db");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$sql="SELECT Lastname,Age FROM Persons ORDER BY Lastname";
$result=mysqli_query($con,$sql);

// Numeric array
$row=mysqli_fetch_array($result,MYSQLI_NUM);
printf ("%s (%s)\n",$row[0],$row[1]);

// Associative array
$row=mysqli_fetch_array($result,MYSQLI_ASSOC);
printf ("%s (%s)\n",$row["Lastname"],$row["Age"]);

// Free result set
mysqli_free_result($result);

mysqli_close($con);
?> 
0
Parth Chavda