Как получить все значения в столбце с помощью PHP? - PullRequest
27 голосов
/ 08 марта 2011

Я искал это везде, но все еще не могу найти решение: как мне получить все значения из столбца mySQL и сохранить их в массиве?

Например: Название таблицы: клиенты Имена столбцов: ID, Имя Количество рядов: 5

Я хочу получить массив всех 5 имен в этой таблице. Как мне это сделать? Я использую PHP, и я пытался просто:

SELECT names FROM Customers

и затем используйте

mysql_fetch_array

PHP-функция для хранения этих значений в массиве.

Ответы [ 6 ]

30 голосов
/ 07 января 2016

Вот простой способ сделать это, используя PDO или 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);

или, используя 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
)
27 голосов
/ 08 марта 2011

Обратите внимание, что этот ответ устарел! Расширение mysql больше не доступно из коробки с PHP7.Если вы хотите использовать старые функции mysql в PHP7, , вам придется скомпилировать ext / mysql из PECL. См. Другие ответы для более актуальных решений.


Это будет работать, см. Дополнительную документацию здесь: 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.
4 голосов
/ 01 января 2016

Я бы использовал соединение mysqli для подключения к базе данных.Вот пример:

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

Следующим шагом является выбор информации.В вашем случае я бы сделал:

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

И, наконец, мы сделаем массив из всех этих имен, набрав:

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

print_r($array);

Итак, что я сделал в этом коде: я выбралвсе имена из таблицы, используя запрос MySQL.Затем я использую цикл while, чтобы проверить, имеет ли $ query следующее значение.Если это так, цикл while продолжается и добавляет это значение в массив '$ array'.Иначе цикл останавливается.И, наконец, я печатаю массив, используя метод print_r, чтобы вы могли видеть, что все работает.Я надеюсь, что это было полезно.

1 голос
/ 07 января 2016

Поскольку mysql _ * устарели, поэтому вот решение с использованием 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

Существует еще один способ сделать это с помощью PDO

  $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);
0 голосов
/ 09 ноября 2018

Во-первых, это только для опытных разработчиков, которые все новички в php. Не используйте эту функцию, если вы используете огромный проект в основном php, используйте эту функцию

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

Все готово сейчас Passаргументы как For Example

$ queryStatment = "SELECT * From USERS";$ testing = displayAllRecords ('localhost', 'root', 'root @ 123', 'email', $ queryStatment);echo $ testing;

Здесь

localhost обозначает Имя host,

root обозначает имя пользователя для database

root@123 указывает password for the database

$queryStatment для generating Query

надеюсь, что это поможет

0 голосов
/ 12 января 2016

Как вернуть функции MySQL обратно в PHP 7
Шаг 1

Сначала получите источник расширения mysql, который был удален в марте:

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

Шаг 2

Затем отредактируйте свой php.ini

Где-то в разделе «Расширения» или «MySQL», просто добавьте эту строку:

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

Шаг 3

Перезапустите PHP, и теперь функции mysql_ * должны снова работать.

Шаг 4

Отключить все устаревшие предупреждения, включая их, из mysql _ *:

error_reporting(E_ALL ^ E_DEPRECATED);

Ниже код поможет вам:

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

Вы также можете получить все значения в столбце, используя mysql_fetch_assoc

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

Это расширение устарело в PHP 5.5.0 и удалено в PHP 7.0.0. Вместо этого следует использовать расширение MySQLi или PDO_MySQL.

Ссылка


ВЫ МОЖЕТЕ ИСПОЛЬЗОВАТЬ MYSQLI АЛЬТЕРНАТИВУ 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);
?> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...