0

クエリの結果を配列にして、その配列を使用して2番目のphpmysqliクエリでデータベースからデータをプルする必要があります。

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

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 => '3番目' ) )。

「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 に答える