0

我正在尝试拉出一个数组以用于另一个查询,但它不起作用,因为最后一个逗号。

    <?php
    include"connection.php";
    $pos = mysqli_query($not,"SELECT * FROM equipos");
    $logos = array();
    while($row= mysqli_fetch_assoc($pos)){
    $logos[] = "<br>'".$row['abrv']."'=>"."'".$row['logo']."'";
    }
    $logos = implode(",", $logos);

    $enjuego = mysqli_query($not,"SELECT * FROM partidos WHERE dprt='ftbls'");
    while($part=mysqli_fetch_array($enjuego)){
    $liga=$part['serie'];
    $eq1= $part['eq1'];
    $eq1s= strtoupper($eq1);
    $eq2= $part['eq2'];
    $eq2s= strtoupper($eq2);

    echo $logos[$eq1].'<br>';
    }
    ?>

它一遍又一遍地给我同样的错误。这是我来的最近的一次,但就是行不通。有人可以告诉我我做错了什么吗?

我得到的错误是:Warning: Illegal string offset 'gua' in line 22

4

4 回答 4

2

您的代码有几个问题:

  • 您从未创建过数组
  • 你不断地覆盖$logos
  • 您的使用substr_replace()表明存在更深层次的问题。

这是一个更好的方法:

  1. 构建阵列。

    $logos = array();
    while($row= mysqli_fetch_assoc($pos)){
      $logos[] = "<br>'".$row['abrv']."'=>"."'".$row['logo']."'";
    }
    
  2. 有很多方法可以将数组压缩成字符串。我鼓励您浏览有关PHP 数组函数的手册。就您而言,您对implode()

    $logos = implode(",", $logos);
    

注:$logos气味的值。您应该构建数组来保存数据,而不是格式化。

例如:

$logos[$row['abrv']] = $row['logo'];

输出:

print_r($logos);
于 2012-11-28T19:46:12.597 回答
1

您想要的可以通过多种方式实现,但是让我们看看您的代码,那里有很多错误。

  • 语义上无意义的变量名称,如pos, not, equipos, abrv. 只有logoresult是好的变量名。

  • *在数据库查询中使用选择器。不要那样做,而是选择您需要的确切字段,这对性能、可维护性、代码可读性、可测试性会更好……还需要我多说吗?

  • 当您真正想要的是包含所有行的数组时,获取每行并在每行上运行代码。解决方案:

    $result = mysqli_query($not, "SELECT * FROM equipos");
    $logos = mysqli_fetch_all($result, MYSQLI_ASSOC);
    
  • 通过使用字符串连接子数组,这不是它的工作方式,你可以做什么:

    while($row = mysqli_fetch_assoc($result))
    {
        $logos[][$row['abrv']] = $row['logo'];
    }
    

    但正如我所说,这没有必要。

  • $logos用循环的每次迭代覆盖你的变量。你需要做$logos[] = ...

于 2012-11-28T20:02:48.387 回答
0

通常,implode对于此类情况很有用。

在不知道您到底想做什么的情况下,将此作为第一个提示:

$logos = array();

while($row= mysqli_fetch_assoc($pos)){
    $logos[] = "<br>'".$row['abrv']."'=>"."'".$row['logo']."'";
}

$logos = implode(",", $logos);
于 2012-11-28T19:44:24.743 回答
0

我想到的最简单的方法就是更改查询并将数组获取到其中 -

<?php
  include_once("connection.php");
  $result = mysqli_query($not,"SELECT abrv, logo FROM equipos");
  $rows = mysqli_fetch_array($result, MYSQLI_ASSOC);

  // display the result
  echo "<pre>"
  print_r($rows);
  echo "</pre>"
?>
于 2012-11-28T20:10:20.800 回答