我有一个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'];
这没有显示任何内容。我的头痛也无济于事。
答案 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'];
什么都没显示。如果这些值为NULL
,FALSE
或空字符串,则情况可能就是这种情况。
下一步是先查看$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'];
}
对我来说糟糕的一天:(
全部谢谢