【问题标题】:Missing row from mysqli $querymysqli $query 中缺少行
【发布时间】:2013-05-22 13:27:54
【问题描述】:

MySqli 的问题是没有输出我的查询结果。

$cxn=mysqli_connect($host,$user,$pw,$dbname) or die("Error connecting to server");

if(!$cxn=mysqli_connect($host,$user,$pw,$dbname)){

        $message=mysqli_error($cxn);
        echo $message;
        die();

}

$query= "SELECT * from merchantinfo WHERE industry='Retail'";
$result=mysqli_query($cxn,$query) or die("Could not execute the query");
$row=mysqli_fetch_assoc($result);


while($row = mysqli_fetch_assoc($result))
{
extract($row);
echo "$INDUSTRY: $NAME<br/>";
}

这是我目前正在使用的表。(merchantinfo)

MerchantID    INDUSTRY    NAME              DESCRIPTION
1             Dining      Burger King       Whopper,Whoppers galore!
2             Retail      ZARA              A large clothing retailer
3             Aviation    Virgin Airlines   Lolwut

我目前在查询后得到一个完全空白的页面,但我似乎无法找出问题所在。我尝试将 $query 和 while 循环中的“行业”更改为所有大写字母以匹配表中的大写字母,我还尝试将它们全部用于小型大写字母。但是我仍然得到一个空白页作为输出。

我也尝试将 $query 更改为

$query="SELECT * FROM merchantinfo";

产生结果:

Retail:ZARA
Aviation:Virgin Airlines

如果有人能指出代码中的错误或指出正确的方向,我将不胜感激

谢谢!

【问题讨论】:

标签: php mysqli


【解决方案1】:

删除:

$row=mysqli_fetch_array($result);

它正在获取您的第一行并且是不必要的(它实际上是在丢弃它)。

此外,除非您的列名是大写的,否则这将不起作用:

extract($row);
echo "$INDUSTRY: $NAME<br/>";

它需要与您的实际列名大小写相同。

【讨论】:

  • @John Conde 我明白了。只是一个关于为什么不需要 $row_mysqli_fetch_array($result) 的快速问题? $row 的目的不只是为了存储查询结果的临时位置吗?如果是这样,为什么没有必要,并丢弃我的第一行?
  • 它实际上为您获取行,这就是您在下面的 while 循环中所做的。它与 mysql_fetch_assoc() 非常相似,只是返回的数据不同。
  • mysqli_fetch_assoc 将键作为字符串返回,而数组将它们作为数字和键返回。但是,如果我应该将 while 循环上方的 fetch_array 更改为 fetch_assoc,则第一行结果将消失。我假设这是因为第一行已经由 while 循环上方的 mysql_fetch_assoc 获取,但我不明白为什么 while 循环无法访问它,因为两个“fetch”都是 fetch_assoc?
  • 获取一行后,光标移动到下一条记录。因此,通过调用 mysql_fetch_* ,您实际上移动了第一条记录。然后,当您执行循环时,您将从第二条记录开始。它不会重置光标。
  • 啊,我明白了。感谢您澄清这一点=)
猜你喜欢
  • 2011-10-07
  • 2013-05-21
  • 2016-01-08
  • 2014-06-08
  • 2013-08-14
  • 1970-01-01
  • 2019-05-23
  • 1970-01-01
  • 2013-11-25
相关资源
最近更新 更多