1

我有一个选择语句,我想从表中获取所有行,但似乎有精神障碍 - 这应该是基本的东西,但似乎无法让它工作。

'postage_price' 表中只有两行 - 和两列:价格 | 参考

选择语句如下:

$get_postage="SELECT price FROM postage_price ORDER BY ref DESC";
$get_postage_result=mysqli_query($dbc, $get_postage) or die("Could not get postage");
while($post_row=mysqli_fetch_array($dbc, $get_postage_result))
{
$post1[]=$post_row;
}

然后我试图回应结果:

echo $post1['0'];
echo $post1['1'];

这没有显示任何内容。我的头痛也无济于事。

4

5 回答 5

1

您拥有$post1[]=$post_row;并且$post_row本身就是一个数组。因此,您可以通过以下方式访问发布数据:$post1[NUMBER][0]其中NUMBER是 $post1 数组索引,并且[0]是 mysqli_fetch_array 返回的 $post_row 的 0 索引。

可能您想$post1[]=$post_row[0];在代码中使用以避免数组数组。

于 2012-11-04T11:33:01.380 回答
1
while($post_row = mysqli_fetch_array($dbc, $get_postage_result))
{
    $post1[] = $post_row['price'];
}

如您所见:$post_row在这一行中:= mysqli_fetch_array($dbc, $get_postage_result)是一个数组。您正在尝试将整个数组值保存到块中的另一个数组中。:)

编辑

while($post_row = mysqli_fetch_array($get_postage_result))
...
于 2012-11-04T11:47:12.373 回答
0

您将 1 和 0 作为字符串索引传递,这仅在您的数据库中有一个名为 0 或 1 的列时才有效。您需要将它们作为数字索引传递。

尝试:

print_r($post1[0]);
print_r($post1[1]);

或者

print_r($post['price']);
print_r($post['ref']);
于 2012-11-04T11:28:29.487 回答
0

如果某些东西在 PHP 脚本中不起作用,您可以做的第一件事就是获得更多知识。你已经写了

echo $post1['0'];
echo $post1['1'];

什么都不显示。仅当这些值为或空字符串NULL时才会出现这种情况。FALSE

所以下一步是要么$post1先调查

var_dump($post1);

通过转储变量。

另一个步骤是在脚本之上启用错误显示和报告到最高级别,以便了解潜在问题在哪里:

ini_set('display_errors', 1); error_reporting(~0);

你也可以使用 PHP 5.4(第一部分也适用于旧的当前 PHP 5.3,foreach但你可以query()返回一些有用的东西)并稍微简化你的脚本,如下所示:

class MyDB extends mysqli
{
    private $throwOnError = true; # That is the die() style you do.

    public function query($query, $resultmode = MYSQLI_STORE_RESULT) {
        $result = parent::query($query, $resultmode);
        if (!$result && $this->throwOnError) {
            throw new RuntimeException(sprintf('Query "%s" failed: (#%d) %s', $query, $this->errno, $this->error));
        }
        return $result;
    }
}

$connection = new MyDB('localhost', 'testuser', 'test', 'test');
$query      = 'SELECT `option` FROM config';
$result     = $connection->query($query);
foreach ($result as $row) {
    var_dump($row);
}
于 2012-11-04T11:48:23.327 回答
0

在您的帮助下,我发现了错误 - 它在 mysqli_fetch_array 中,我有不需要的 $dbc。

$get_postage="SELECT price FROM postage_price ORDER BY ref DESC";
$get_postage_result=mysqli_query($dbc, $get_postage) or die("Could not get postage");
while($post_row=mysqli_fetch_array($get_postage_result))
{
$post1[]=$post_row['price'];
}

代替:

$get_postage="SELECT price FROM postage_price ORDER BY ref DESC";
$get_postage_result=mysqli_query($dbc, $get_postage) or die("Could not get postage");
while($post_row=mysqli_fetch_array($dbc, $get_postage_result))
{
$post1[]=$post_row['price'];
}

对我来说糟糕的一天:(

谢谢大家

于 2012-11-04T11:54:17.733 回答