次のスクリプトをテストします。 PHP 5.3.3。 mysql 5.0.95。php foreachループが配列全体を実行しない
<?php
// show errors in browser
error_reporting(E_ALL);
ini_set('display_errors', 'on');
// connect to database
$conn = mysqli_connect('xxx', 'xxx', 'xxx', 'xxx');
if (!$conn) {
die("connection failed: " . mysqli_connect_error());
}
$company_request = 'xxx';
$employee_request = 'xxx';
$timecard_data_results = array();
$fill_old_data_array_def = " SELECT company_id, employee_id, location, task_name, task_start_time, task_end_time, tccomment FROM timecard WHERE company_id = '" . $company_request . "' AND employee_id = '" . $employee_request . "' ORDER BY task_start_time";
$timecard_data_results = mysqli_query($conn, $fill_old_data_array_def);
$iteration = '1';
foreach ($timecard_data_results as $timecard_record) {
$timecard_record = mysqli_fetch_assoc($timecard_data_results);
echo $timecard_record['company_id'] . $timecard_record['task_name'] . $timecard_record['task_start_time'];
echo " " . $iteration . "<br>";
$iteration = $iteration + '1';
}
echo "<br>" . $iteration . "<br>";
echo '<pre>';
print_r($timecard_data_results);
echo '</pre>';
?>
ブラウザの出力は次のようになります。
HOSCS:Train Crew:Engineer trainin 2016-10-14 07:00:00 1
HOSCS:Train Crew:Engineer in trai 2016-10-16 10:00:00 2
HOSCS:Train Crew:Engineer in trai 2016-10-17 07:30:00 3
HOSCS:Train Crew:Engineer in trai 2016-10-18 08:15:00 4
HOSCS:Train Crew:Engineer in trai 2016-10-19 09:45:00 5
6
mysqli_result Object
(
[current_field] => 0
[field_count] => 7
[lengths] => Array
(
[0] => 3
[1] => 6
[2] => 21
[3] => 31
[4] => 19
[5] => 19
[6] => 1
)
[num_rows] => 49
[type] => 0
)
foreachループは5回のパスの後に終了するように見えます。ブラウザにエラーメッセージはありません。スクリプトが中止されたとは思われません。 Print_rは配列内に49行を表示します。 いくつかのデータがループに拮抗していた可能性について、クエリで異なるソート順を試しました。同じ結果:5件のレコード。 クエリには0.062秒かかります。 出力内のコロンは、すべての行を一度実行すると、foreachループで解析する必要がある元のテキストファイルアーキテクチャのフィールドの一部です。
foreachではなくwhileループを使用してください。 –
mysqli_queryはmysqli結果オブジェクトを返します。結果自体ではなく、そのオブジェクト/クラスを反復しています! – Jeff