Я искал это везде, но все равно не могу найти решение. Как получить все значения из столбца mySQL и сохранить их в массиве?
Например: Имя таблицы: Клиенты Имена столбцов: Идентификатор, Имя Количество строк: 5
Я хочу получить массив из всех 5 имен в этой таблице. Как мне это сделать? Я использую PHP, и я пытался просто:
SELECT names FROM Customers
и затем используйте
mysql_fetch_array
Функция PHP для хранения этих значений в массиве.
Обратите внимание, что этот ответ устарел! Расширение 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.
Вот простой способ сделать это, используя 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 )
Я бы использовал соединение 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», чтобы вы могли видеть, как все это работает. Я надеюсь, что это было полезно.
Поскольку 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);
Как вернуть функции 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); ?>