0

我需要将查询的结果变成一个数组,并使用该数组在第二个 php mysqli 查询中从数据库中提取数据。

<?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 18

4

3 回答 3

1

在这里,您将$logos数组变量转换为字符串类型:

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

然后在最后你想再次访问它,就好像它是一个数组一样:

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

这就是你得到的错误。

于 2012-11-29T08:19:46.200 回答
0

你有一个用于 $logos 的有序数组。你不能仅仅通过 implode(",", $logos) 来内爆它,这样你就试图内爆一个逗号分隔的数组,(它应该看起来像 $logos=array("foo","bar"); 内爆为逗号分隔的数组。

$logo[] => 这应该是这样的;$logo=array("0"=>"foo", "1"=>​​"bar") 尝试转储你的数组,你会在第一个 while 循环之后看到什么是错误的 (var_dump($logo);)。

于 2012-11-29T08:24:08.723 回答
0

首先,删除内爆,因为这会将您的数组转换为字符串。

然后你试图从 $logos 数组中的表“partidos”中获取键“eq1”,它可能不存在(因为数组会喜欢这个数组(0 => 'first', 1 => 'second', 2 =>'第三'))。

您必须在“equipos”和“partidos”之间有一些共同点,可以说“abrv”与 eq1 相同,解决方案将是:

<?php

include"connection.php";

$pos = mysqli_query($not, "SELECT * FROM equipos");

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

$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>';
}
于 2012-11-29T08:42:29.817 回答