2

当我尝试从 MySQL 中的表中选择一列并将其转换为 PHP 数组时,我遇到了一些问题。当我回显我的结果(PHP 数组)时,它不会返回任何东西。

这是我的代码:

$result_while = mysql_query("SELECT id` 
      FROM afunda_eleva");

$array = array();
while ($row = mysql_fetch_array($result_while)) {
  $array[] = $result_while['id'];
}

for($i=0; $i < 4; $i++)
{
    echo "$array[$i]"; //Possibly error happening here!!
}
4

3 回答 3

3

Gustavomysql_query在较新的 PHP 版本中已被弃用,它不安全但可以完成工作。相反,我宁愿用我最喜欢的查询数据库 PDO的方式给你一个答案,它是安全的并且是面向对象的。

首先我们需要设置它

// instance of pdo
$config['db'] = array
(
    'host' => '',
    'username' => '',
    'password' => '',
    'dbname' => ''
);
$database = new PDO('mysql:host=' . $config['db']['host'] . 
';dbname=' . $config['db']['dbname'],
$config['db']['username'],
$config['db']['password']);
$database->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

//query with a new database object
$queryObject = $database->prepare("SELECT id 
FROM afunda_eleva");
//execute sql
$queryObject ->execute();
// store the results in array
$results = $queryObject->fetchAll();
//print_r results to test 
print_r($results);
//after analysing the array and how its structured define
for($i=0; $i < 4; $i++)
{
    echo $results[$i] 
}

在实例上使用您的数据库凭据尝试该代码,如果您想将其包含在一个单独的数据库文件中,该文件在调用 pdo 之前被包含,请确保您调用global $database;它的实例

这是一个很好的 pdo 教程播放列表,祝你好运

https://www.youtube.com/watch?v=XQjKkNiByCk

于 2013-09-27T00:53:58.620 回答
2

首先,如果您希望使用数组中的列名,您需要替换mysql_fetch_arraymysql_fetch_assoc.

while然后,您需要在循环中访问行,而不是结果:

$array[] = $row['id'];
于 2013-09-27T00:43:00.327 回答
1

1-要获得结果,您必须$row改为$result_while['id]

2-为了打印一个数组,你必须使用print_r()var_dump()

$result_while = mysql_query("SELECT id` 
      FROM afunda_eleva");

$array = array();
while ($row = mysql_fetch_array($result_while)) {
  $array[] = $row;
}

echo '<pre>';
print_r($array);
echo '<pre>';

元素中的文本以<pre>固定宽度字体(通常是 Courier)显示,并且保留空格和换行符。

旁注: 为什么我不应该在 PHP 中使用 mysql_* 函数一个有用的链接

于 2013-09-27T00:46:23.640 回答