使用mysqlLIKE查询获取多行.mysql中的wrks,但php中没有


Fetching multiple rows using mysql LIKE query. wrks in mysql but not in php

这是我的mysql查询:

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

爱好字段类型-长文本。

这将在mysql中获取两个值。S1001、S1002

当我在PHP代码中使用它时,第一行只得到。

这是我的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,,

正如你所看到的,第二个是空的。循环错误吗?我正在将此值导出到应用程序发明家。

试试这个:

$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;

您不应该循环遍历$行,它总是在第一个位置!应该是$row[0]$row['studentID'] 而不是$row[$i]

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

代替for循环,您还可以使用while循环:

if ($numberOfRows>0) {
    while($row = mysqli_fetch_array($result)) {
        $csv_output .= $row['studentID'].",";
    }
    $csv_output .= "'n";
}