За последние 24 часа нас посетили 34197 программистов и 1314 роботов. Сейчас ищут 957 программистов ...

Почему не работают сразу несколько запросов к БД на mysqli?

Тема в разделе "PHP и базы данных", создана пользователем eldor, 8 июн 2013.

  1. eldor

    eldor Активный пользователь

    С нами с:
    3 май 2013
    Сообщения:
    202
    Симпатии:
    20
    Почему не работают сразу несколько запросов к БД на mysqli?

    $clubs_1 = "SELECT `name_clubs`,`skill_clubs` FROM `clubs` ORDER BY `skill_clubs` DESC LIMIT 10";
    $clubs = mysqli_prepare($db,$clubs_1);
    mysqli_stmt_execute($clubs);
    mysqli_stmt_bind_result($clubs, $name_clubs, $skill_clubs);

    $news_1 = "SELECT `id_news`,`date_news`,`theme_news`,`description_news`,`author_news` FROM `news`";
    $news = mysqli_prepare($db,$news_1);
    var_dump($news);
    mysqli_stmt_execute($news);
    mysqli_stmt_bind_result($news, $id_news, $date_news, $theme_news, $description_news, $author_news);

    var_dump($news) выдает false. Подскажите пожалуйста почему?
     
  2. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Re: Почему не работают сразу несколько запросов к БД на mysq

    Sql наверно не выполнился.
    mysqli_error
     
  3. eldor

    eldor Активный пользователь

    С нами с:
    3 май 2013
    Сообщения:
    202
    Симпатии:
    20
    Re: Почему не работают сразу несколько запросов к БД на mysq

    Вот какая ошибка:
    Commands out of sync; you can't run this command now
     
  4. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
  5. eldor

    eldor Активный пользователь

    С нами с:
    3 май 2013
    Сообщения:
    202
    Симпатии:
    20
    Re: Почему не работают сразу несколько запросов к БД на mysq

    Еще бы английский знать)))
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: Почему не работают сразу несколько запросов к БД на mysq

    самое время осваивать
     
  7. eldor

    eldor Активный пользователь

    С нами с:
    3 май 2013
    Сообщения:
    202
    Симпатии:
    20
    Re: Почему не работают сразу несколько запросов к БД на mysq

    Я вышел из ситуации таким образом:

    $clubs_1 = "SELECT `name_clubs`,`skill_clubs` FROM `clubs` ORDER BY `skill_clubs` DESC LIMIT 10";
    $clubs_2 = mysqli_prepare($db,$clubs_1);
    mysqli_stmt_execute($clubs_2);
    mysqli_stmt_bind_result($clubs_2, $name_clubs, $skill_clubs);
    $clubs = Array();
    $p = 0;
    while (mysqli_stmt_fetch($clubs_2))
    {
    $clubs[$p]['name_clubs'] = $name_clubs;
    $clubs[$p]['skill_clubs'] = $skill_clubs;
    $p++;
    }
    mysqli_stmt_close($clubs_2);

    $news_1 = "SELECT `id_news`,`date_news`,`theme_news`,`description_news`,`author_news` FROM `news`";
    $news_2 = mysqli_prepare($db,$news_1);
    mysqli_stmt_execute($news_2);
    mysqli_stmt_bind_result($news_2, $id_news, $date_news, $theme_news, $description_news, $author_news);
    $news = Array();
    $p = 0;
    while (mysqli_stmt_fetch($news_2))
    {
    $news[$p]['id_news'] = $id_news;
    $news[$p]['date_news'] = $date_news;
    $news[$p]['theme_news'] = $theme_news;
    $news[$p]['description_news'] = $description_news;
    $news[$p]['author_news'] = $author_news;
    $p++;
    }
    mysqli_stmt_close($news_2);
    ...
    <html>
    <head>...</head>
    <body>
    $b = 1;
    do
    {
    echo'<tr><td class="a">'.$b.'</td><td class="b">'.$clubs[$b-1]['name_clubs'].'</td><td class="c">Флаг</td><td class="d">'.$clubs[$b-1]['skill_clubs'].'</td></tr>';
    ++$b;
    }
    while (next($clubs));
    $b = 0;
    do
    {
    echo '<h4>'.$news[$b]['theme_news'].'</h4>';
    echo '<p class="new">'.$news[$b]['description_news'].'</p>';
    echo '<p class="author">Автор:'.$news[$b]['author_news'].'</p>';
    echo '<p id="date">'.$news[$b]['date_news'].'</p>';
    echo '<h5><a href="news.php?id='.$news[$b]['id_news'].'">Подробнее...</a></h5>';
    echo '<hr>';
    $b++;
    }
    ...
    </body>
    </html>

    Меня интересует то, что выделено. Можно ли так делать в плане безопасности?

    P.S. Если есть еще замечания в данном коде - с радостью прочитаю.
     
  8. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Re: Почему не работают сразу несколько запросов к БД на mysq

    А говорил что английский не знаешь, можешь когда хочешь:)

    Может я чего то не вижу, а почему ты считаешь это не безопасным.Есть переменная ты ее выводишь, если не хочешь что бы эти данные были видны не выводи.

    Что мне не нравится:
    1) Не люблю while - по моему for($i=0; mysqli_stmt_fetch($news_2); $i++) выглядит лучше
    2) не используй do{ } while почитай различие между do{} while и while и ты сам все поймешь
     
  9. eldor

    eldor Активный пользователь

    С нами с:
    3 май 2013
    Сообщения:
    202
    Симпатии:
    20
    Re: Почему не работают сразу несколько запросов к БД на mysq

    Со вчерашнего дня мои знания английского языка остались на том же уровне)))) Просто по коду понял что надо делать, а что не знал Google помог)))

    Я разницу в общем понимаю. Но если использовать while, то next сразу передвигает внутренний указатель массива и при первом цикле уже выводится второй указатель массива.
     
  10. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Re: Почему не работают сразу несколько запросов к БД на mysq

    используй for(){}
     
  11. eldor

    eldor Активный пользователь

    С нами с:
    3 май 2013
    Сообщения:
    202
    Симпатии:
    20
    Re: Почему не работают сразу несколько запросов к БД на mysq

    сижу как раз про for читаю (точнее вспоминаю как он работает :) )