2017-04-14 18 views
1

次のコードで動作します。 $accessible_idsはここから来ている:PHPのin_array()は、ネストされた場合

$result = $conn->query("SELECT id FROM $someTable WHERE userID = $userID"); 
$accessible_ids = array(); 
while($result && ($row= $result->fetch_assoc())){ 
    $accessible_ids[] = $row['id']; 
} 

しかし:$accessible_ids要素が含まれている場合に '1' のみ、両方のコードが動作します。しかし、$accessible_idsに '2'と '3'が含まれていれば、下位のコードだけが私に役立ちます。

これはなぜ私がこれにふさわしいことをしたのかを知りたいだけです。 (私はしばらく時間がかかったと私はPHP 7とXAMPPを使用しています原因を見つける)

更新:

サンプル出力:

print_r($accessible_ids); 
$result = $conn->query("SELECT * FROM $myTable"); 
while($result && ($row = $result->fetch_assoc())){ 
    if(in_array($row['id'], $accessible_ids)){ 
    //do something 
    echo '<br>'; 
    print_r($row['id']); 
    } 
} 

が生成されます

Array ([0] => 2 [1] => 3) 
2 
3 
+0

あなたは 'ますprint_r($ accessible_ids)'と 'ますprint_r($行[ 'ID'])'のサンプルを共有しませんか? –

答えて

0

ちょうどimplode()$accessible_idsと照会で渡す。それはin_array()のあなたの欲望の結果withoutの使用を与えるでしょう。

$ids = implode(', ', $accessible_ids); 
$result = $conn->query("SELECT * FROM $myTable WHERE id IN($ids)"); 
$row_cnt = $result->num_rows; 
if($row_cnt > 0) 
{ 
    while ($row = $result->fetch_assoc()) { 
    // do something 
    } 
} 

使用num_rowsは、気象問合せの戻り結果を確認したり

+0

あなたは上記の答えをチェックしましたか? – Saty