无法从查询中获取数组

时间:2012-11-29 08:14:08

标签: php mysqli mysqli-multi-query

我需要查询的结果成为一个数组,并使用该数组从第二个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>';
}
?>

它一遍又一遍给我同样的错误。这是我最接近的但是没有用。有人能告诉我我做错了什么吗?

我得到的错误是:警告:第18行中的非法字符串偏移'gua'

3 个答案:

答案 0 :(得分:1)

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

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

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

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

这是你得到的错误。

答案 1 :(得分:0)

你有$ logos的数字有序数组。你只能通过implode(“,”,$ logos)来破坏它,这样你就试图破坏一个逗号分隔的数组,(它应该看起来像$ logos = array(“foo”,“bar”);内爆为逗号分隔数组。

$ logo [] =&gt;这应该是这样的; $ logo = array(“0”=&gt;“foo”,“1”=&gt;“bar”) 尝试转储你的数组,你会在第一次while循环后看到有什么问题(var_dump($ logo);)。

答案 2 :(得分:0)

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

然后你试图从$ logos数组中的表“partidos”获取密钥“eq1”,这可能不存在(因为数组将喜欢这个数组(0 =&gt;'first',1 =&gt; 'second',2 =&gt;'third'))。

你必须拥有“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>';
}