【问题标题】:Turning a mysql column into a php array and echoing it将 mysql 列转换为 php 数组并回显它
【发布时间】:2013-10-03 04:07:43
【问题描述】:

当我尝试从 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!!
}

【问题讨论】:

  • 看起来您在 SQL 中缺少围绕“id”的第一个反引号。它可能返回一个错误。

标签: php mysql arrays


【解决方案1】:

Gustavo mysql_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 之前将其包含在一个单独的 db 文件中,请确保您调用 global $database; 来调用其实例

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

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

【讨论】:

  • +1 非常好的例子。我不主张坚持使用mysql_*,但 GustavoxD 必须在他自己的代码上下文中理解他的错误。
  • @Sébastien 对不起,你们俩都有拉丁名字,我不知道是谁问的,我不是故意找你的。对不起
【解决方案2】:

首先,如果您希望使用数组中的列名,您需要将 mysql_fetch_array 替换为 mysql_fetch_assoc

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

$array[] = $row['id'];

【讨论】:

  • 嗯,真的!它现在起作用了!我已经经历了一段合理的时间。非常感谢!
【解决方案3】:

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>';

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

旁注: Why shouldn't I use mysql_* functions in PHP 一个有用的链接

【讨论】:

  • 正如 Sébastien 所建议的,我认为问题出在“$array[] = $result_while['id'];”上。但是感谢mysqli的提示!我要开始学习了。
猜你喜欢
  • 1970-01-01
  • 2020-09-04
  • 1970-01-01
  • 1970-01-01
  • 2014-04-30
  • 1970-01-01
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多