基本的mysqli选择

时间:2012-11-04 11:21:10

标签: php mysql select mysqli

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

表'postage_price'中只有两行 - 以及两列:price |参考

Select语句如下:

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

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

5 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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))
...

答案 2 :(得分:0)

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

尝试:

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

print_r($post['price']);
print_r($post['ref']);

答案 3 :(得分:0)

如果某些内容在PHP脚本中不起作用,那么您首先要做的就是获得更多知识。你写过那个

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

什么都没显示。如果这些值为NULLFALSE或空字符串,则情况可能就是这种情况。

下一步是先查看$post1

var_dump($post1);

通过转储变量。

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

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

你也可以使用PHP 5.4(第一部分也适用于旧的当前PHP 5.3,foreach没有,但你可以让query()返回一些东西)并简化你的脚本a很少,像这样:

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

答案 4 :(得分: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'];
}

对我来说糟糕的一天:(

全部谢谢