2016-04-02 18 views
0

でwrksは、これは私のmysqlのクエリです:mysql LIKEクエリを使用して複数の行を取得しています。 MySQLではなく、PHP

select studentID from GameMaster where hobbies like '%baseball%' and hobbies like '%basketball%'; 

趣味フィールドタイプ - 長いテキスト。

これは、mysqlの2つの値を取得します。 S1001、S1002

これをPHPコードで使用すると、最初の行だけが取得されます。

はここ

$sSQL="select studentID from GameMaster where hobbies like '%baseball%' and hobbies like '%basketball%'"; 

$result = mysqli_query($dbc,$sSQL); 

$numberOfRows = mysqli_num_rows($result); 

if ($numberOfRows>0) { 

    for ($i = 0; $i < $numberOfRows; $i++) { 

     $row = mysqli_fetch_array($result); 
    $csv_output .= $row[$i].","; 
    } 
    $csv_output .= "\n"; 
} 
print $csv_output; 

$のcsv_output値がS1001である私のPHPコード,,

あなたが見ることができるように、二番目が空です。ループが間違っていますか?私はこの値をアプリの発明者にエクスポートしています。

+0

は、正規化を参照してください。 – Strawberry

+0

あなたが期待している答えは「S1001、S1002」ですか? – Jester

答えて

0

$行をループしてはいけません。常に最初の位置にあります。 代わりの$row[$i]それは$row[0]または$row['studentID']

if ($numberOfRows>0) { 

    for ($i = 0; $i < $numberOfRows; $i++) { 

     $row = mysqli_fetch_array($result); 
     $csv_output .= $row['studentID'].","; 
    } 
    $csv_output .= "\n"; 
} 

の代わりに、あなたはまた、whileループを使用することができますforループのようになります。

if ($numberOfRows>0) { 

    while($row = mysqli_fetch_array($result)) { 

     $csv_output .= $row['studentID'].","; 
    } 
    $csv_output .= "\n"; 
} 
0

これを試してみてください:

$sSQL="select studentID from GameMaster where hobbies like '%baseball%' or hobbies like '%basketball%'"; 

$result = mysqli_query($dbc,$sSQL); 

$numberOfRows = mysqli_num_rows($result); 

if ($numberOfRows>0) 
{ 
    $row = mysqli_fetch_array($result); 
    for ($i = 0; $i < $numberOfRows; $i++) 
    { 
     $csv_output .= $row[$i].","; 
    } 
    $csv_output .= "\n"; 
} 
print $csv_output; 
+0

何も効果がありません。 mysqli_fetch_array($ result); $行["studentID"] – aarthi

関連する問題