0

で区切られた利用可能な色と一緒に果物の名前を含むこの文字列があります,。複数の果物の詳細は、 を使用して区切られて|います。

$string = 'apple,red,green|banana,yellow,green';

以下のコードでは、 を使用して果物の名前のみを抽出していexplode()ます。果物の名前を使用して、MySQL DB からレコードをクエリします。

foreach ( explode( '|', $string ) as $fruitas ) {
  $data = explode( ',', $fruitas );

  $sql = mysql_query( "SELECT * FROM user WHERE fruits = '$data[0]' ") or die ( mysql_error() );
  while ( $row = mysql_fetch_array( $sql ) ){
    $fruits = $row['fruits'];
    echo $fruits . '<br />';
  }
}

$data[0]果物の名前があります。

私は以下の出力を期待していました:

APPLE    20
BANANA   20

リンゴとバナナは の果物の名前だから$stringです。また、クエリはリンゴとバナナのレコードのみをプルする必要があります。

コードが正しいことはわかっていますが、echo()レコードを取得しても何も印刷されません!

問題を理解するのを手伝ってください。

* アップデート 答えが見つかりました*

4

2 に答える 2

1

これは有効な PHP ではなく、コードがまったく実行されていないと思います。

echo $fruits . <br />

このようなものをデバッグする適切な方法は、まずコードを解析可能にすることです。次に、クエリが期待どおりかどうかを確認します。mysql_query() を print() に変更し、クエリが正しいかどうかを確認します。クエリを予期していない値をクエリしている可能性があります。利用可能な場合は、MySQL コンソールで (または phpMyAdmin を介して) クエリを実行して、正しい値が返されるかどうかを確認できます。

次に、var_dump($row); などのデバッグ ステートメントを追加します。ループ内で、クエリから実際に何かを取得しているかどうかを確認し、$fruits の値が期待どおりかどうかを確認します。

補足: 将来のプロジェクトでは mysql を削除し、代わりに mysqli または PDO を使用する必要があります。どちらも、プレースホルダーなどの非常に必要な機能をサポートする、より最新のデータベース ライブラリです。

より良い回答を得るには、次回データベース構造も含める必要があります。

于 2012-07-17T09:17:47.843 に答える
1

変化する:

$fruits = $row[fruits];

$fruits = $row['fruits'];

echo $fruits . <br />

echo $fruits . '<br />';
于 2012-07-17T09:10:30.083 に答える