如何使用PHP获取列中的所有值?

我一直在寻找这个无处不在,但仍然无法find一个解决scheme:我如何从一个mySQL列中获取所有的值,并将它们存储在一个数组中?

例如:表名称:客户列名称:ID,名称行号:5

我想要得到这个表中所有5个名字的数组。 我该如何去做呢? 我正在使用PHP,我只是想:

SELECT names FROM Customers 

然后用

 mysql_fetch_array 

PHP函数将这些值存储在一个数组中。

请注意,这个答案已经过时了! 从PHP7开始,mysql扩展不再可用。 如果你想在PHP7中使用旧的mysql函数, 你将不得不从PECL编译ext / mysql。 查看其他答案以获取更多最新解决scheme。


这将工作,看到更多的文档在这里: 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); 

下一步是select信息。 在你的情况下,我会这样做:

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

最后,我们通过键入以下所有这些名称来创build一个数组:

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

所以我在这个代码中做了什么:我使用mysql查询从表中select所有名称。 接下来我使用while循环来检查$ query是否有下一个值。 如果是这样,while循环继续并将该值添加到数组“$ array”。 否则循环停止。 最后我使用'print_r'方法打印数组,以便您可以看到所有的工作。 我希望这是有帮助的。

由于mysql_ *被弃用,所以这里是使用mysqli的解决scheme。

 $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

首先得到3月份被删除的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

closures包含它们在内的所有不推荐使用的警告:

 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扩展。

参考


您可以轻松使用MYSQL的MYSQLI替代方法


*

 <?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); ?>