Используя mysql_fetch_assoc и mysql_result вместе? - PullRequest
0 голосов
/ 16 апреля 2011

У меня большие проблемы с попыткой использовать 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));

Помочь в помощи,

Большое спасибо,

Дэвид

Ответы [ 3 ]

1 голос
/ 16 апреля 2011

Я не уверен, что это решит вашу проблему, но я думаю, что вы должны "seek" вернуть результат.

mysql_data_seek ($not_related_before, 0)

Кроме того, ознакомьтесь с предупреждением на странице mysql_result :

Вызовы mysql_result () не должны быть смешанный с вызовами других функций которые имеют дело с результирующим набором.

Надеюсь, это поможет;)

0 голосов
/ 16 апреля 2011

Более простым решением было бы использование 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 />"; 
}
?>

НТН

0 голосов
/ 16 апреля 2011

Вы получаете одну строку, потому что первая уже запрошена здесь:

$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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...