Я использую записи db для заполнения строки и столбца в таблице. Но я дважды не могу получить доступ к SQL-данным, дважды используя mysqli_fetch_array()
. Это не работает:
//Copy the result $db_res = mysqli_query( $db_link, $sql ); $db_res2=$db_res; //Top row while ($row = mysqli_fetch_array( $db_res, MYSQL_ASSOC)) { echo "<td>". $row['Title'] . "</td>"; } //leftmost column while ($row = mysqli_fetch_array( $db_res2, MYSQL_ASSOC)) { echo "<tr>"; echo "<td>". $row['Title'] . "</td>"; ..... echo "</tr>"; }
Как я mysqli_fetch_array
дважды применить mysqli_fetch_array
к одному результату?
Вы всегда должны отделять данные от вывода.
Сначала выберите свои данные:
$db_res = mysqli_query( $db_link, $sql ); $data = array(); while ($row = mysqli_fetch_assoc($db_res)) { $data[] = $row; }
Затем используйте его столько раз, сколько пожелаете:
//Top row foreach ($data as $row) { echo "<td>". $row['Title'] . "</td>"; } //leftmost column foreach ($data as $row) { echo "<tr>"; echo "<td>". $row['Title'] . "</td>"; ..... echo "</tr>"; }
Да. mysqli_fetch_array()
перемещает указатель вперед каждый раз, когда вы его вызываете. Вам нужно mysqli_data_seek()
чтобы вернуть указатель в начало, а затем снова вызвать mysqli_fetch_array()
.
Поэтому, прежде чем вызывать функцию во второй раз, выполните:
mysqli_data_seek($db_res, 0);
$squery = mysqli_query($con,"SELECT * FROM table"); while($s = mysqli_fetch_array($query)){ .... } // add this line mysqli_data_seek( $query, 0 ); while($r = mysqli_fetch_array($query)){ ... }
попробуй…..