2017-10-21 5 views
0

whileループを設定して、ユーザーが20日以内のすべてのIDを配列に追加しようとしました。現在、未定義オフセットのエラーを表示します。 lastSeen列で20日の最初の行のIDを取得し、次に2番目の行のIDを取得して配列に追加するように、コードをどのようにコードすることができますか?ループを介してMySqlデータベースの値を配列に追加する

$get_email = mysqli_query($con, "SELECT id FROM users WHERE lastSeen='20'"); 
$email = mysqli_fetch_array($get_email); 
$num_days = mysqli_num_rows($get_email); 
$i = 1; 
$array_id = array(); 
while($i <= $num_days){ 
array_push($array_id, $email[$i]); 
$i = $i + 1; 
} 
+0

[ 'mysqli_fetch_array()'](http://php.net /manual/en/mysqli-result.fetch-array.php)は、考えられるようにすべての結果セットを返しません。ドキュメントには次のように書かれています:* "結果行を取得..." *。つまり、すべての行を取得するためにループ内で何度も呼び出す必要があります。 – axiac

+0

@axiac意図した結果を得るには、どうしたらいいですか? – apaul

答えて

1

まず、コードが混乱しています。データベースからIDを取得しますが、変数の名前は「電子メール」になります。一貫性を保つようにしてください。このコードをもう一度読むと、後で助けになります。

データベースから取得した値を処理しないため、mysqli_fetch_all()を使用できます。レコードセットからすべての行を一度に配列に返します。 MYSQLI_ASSOCを2番目の引数として渡すと、結果セットの各行から作成する配列のキーとして(クエリのSELECT句の)列名を使用するように指示されます。

次に、正確にあなたが必要な値を含む新しい配列に列idarray_column()のみを抽出した値、PHPの関数:

$result = mysqli_query($con, "SELECT id FROM users WHERE lastSeen='20'"); 
// Get all the rows, indexed by column names 
$rows = mysqli_fetch_all($result, MYSQLI_ASSOC); 
// Get only the 'id' column 
$ids = array_column($rows, 'id'); 
関連する問題