Как получить все значения в столбце с помощью PHP?
Я искал это везде, но не могу найти решение: как получить все значения из столбца mySQL и сохранить их в массиве?
Например:
Название таблицы: клиенты
Имена столбцов: идентификатор, имя
Количество строк: 5
Я хочу получить массив из всех 5 имен в этой таблице. Как мне это сделать? Я использую PHP, и я пытался просто:
SELECT names FROM Customers
а затем используйте
mysql_fetch_array
Функция PHP для хранения этих значений в массиве.
Ответы
Ответ 1
Обратите внимание, что этот ответ устарел! Расширение 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.
Ответ 2
Вот простой способ сделать это, используя 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
)
Ответ 3
Я бы использовал соединение mysqli для подключения к базе данных. Вот пример:
$connection = new mysql("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", чтобы вы могли видеть, как все это работает. Я надеюсь, что это было полезно.
Ответ 4
Так как 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);
Ответ 5
Как вернуть функции 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);
?>