#php #mysql #loops
#php #mysql #циклы
Вопрос:
У меня возникают большие проблемы при попытке использовать mysql_fetch_assoc
и mysql_result
вместе в одном PHP-скрипте.
Изначально (когда не использовалась mysql_result
функция) Я получал требуемые значения базы данных, используя комбинацию mysql_query
и mysql_fetch_assoc
, и все было в порядке. Затем я добавил 2 строки в свой код, чтобы получить определенные значения поля ‘title’ с помощью mysql_result
.
Теперь, если я запущу свой скрипт, как показано ниже, я получу только 1 результат, хотя есть 2 результата. Тогда, если я переместу свой do/while
цикл вверх так, чтобы он находился между двумя другими блоками кода ( mysql_fetch_assoc
и mysql_result
строками), я получу желаемые 2 результата.
Мне нужно, чтобы мой цикл начинался после mysql_result
раздела, поэтому ставить цикл перед ним не вариант.
// connect to DB and get values
mysql_select_db($database, $mywebsite);
$query_not_related_before = "SELECT * FROM table limit 2";
$not_related_before = mysql_query($query_not_related_before, $ mywebsite);
$row_not_related_before = mysql_fetch_assoc($not_related_before);
// Extract just the results from the title field (the problem area!)
$before_essayid4 = mysql_result($not_related_before,0, 'title');
$before_essayid5 = mysql_result($not_related_before,1, 'title');
// Display results etc
do {
echo "<br />".$row_not_related_before['title']."<br />";}
while ($row_not_related_before = mysql_fetch_assoc($not_related_before));
Пожалуйста, помогите,
Большое спасибо,
Дэвид
Ответ №1:
Я не уверен, решит ли это вашу проблему, но я думаю, вам следует « seek
» вернуть результат обратно.
mysql_data_seek ($not_related_before, 0)
Кроме того, проверьте предупреждение на странице mysql_result:
Вызовы mysql_result() не следует смешивать с вызовами других функций, которые имеют дело с результирующим набором.
Надеюсь, это поможет 😉
Ответ №2:
Вы получаете одну строку, потому что первая уже запрошена здесь:
$row_not_related_before = mysql_fetch_assoc($not_related_before);
Итак, я думаю, вам нужно переместить указатель результата в начало:
mysql_data_seek($not_related_before, 0);
// Display results etc
do {
echo "<br />".$row_not_related_before['title']."<br />";}
while ($row_not_related_before = mysql_fetch_assoc($not_related_before));
Ответ №3:
Более простым решением было бы использовать 2D-массивы, я всегда находил функции mysql немного громоздкими.
<?php
$result = mysqli_query(db_connect(),$query);
$result_out = array();
if(@mysqli_num_rows($result))
while($row=mysqli_fetch_array($result,MYSQLI_ASSOC))$result_out[]=$row;
foreach($result_out as $row)
{
echo "<br />".$row['title']."<br />";
}
?>
hth