За последние 24 часа нас посетили 20585 программистов и 1134 робота. Сейчас ищут 603 программиста ...

mysql_fetch_array() expects parameter 1 to be resource, bool

Тема в разделе "MySQL", создана пользователем Zibba, 24 янв 2010.

  1. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
  2. Natali94

    Natali94 Новичок

    С нами с:
    5 июн 2016
    Сообщения:
    5
    Симпатии:
    0
    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in V:\home\localhost\www\redklienti.php . Вот ошибка, которую выдает.
     
  3. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    Как минимум это не весь текст ошибки, хотя вызов mysql_fetch_array() только один в коде из предыдущего сообщения.
    Как это перевести? Первый аргумент ожидался типа resource, но был получен boolean.
    mysql_query($query) мог вернуть false если в запросе $query была ошибка, то есть нет проверки на ошибки.
    По какой книге учишь PHP и MySQL?
     
  4. Natali94

    Natali94 Новичок

    С нами с:
    5 июн 2016
    Сообщения:
    5
    Симпатии:
    0
    php
    Я понимаю что ошибка где-то в запросе, но не вижу ее(( уже несколько дней сижу с этим
     
  5. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    Найди в мануале функцию, которая дает сообщение об ошибке при последнем запросе. Сделай запрос (тот который неправильный), выполни эту функцию и прочитай текст ошибки. Далее по обстоятельствам голову включай, гугли, вопросы задавай.
     
  6. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    покажи sql запрос, ну и как Ganzal написал тоже попробуй
     
  7. Natali94

    Natali94 Новичок

    С нами с:
    5 июн 2016
    Сообщения:
    5
    Симпатии:
    0
    спасибо)все заработало1спасибо
    --- Добавлено ---
    Опять потревожу всех. Тут не понимаю даже в чем дело. Задача на обновление и изменение данных. Когда я в поисковике ввожу №=1 (к примеру) , то в форме выводятся данные этого номера. В форме эти данные могу изменить и при нажатии кнопки , они сохраняются и обновляются. ПОмогите пожалуйста!Срочно! Завтра сдать уже нужно!

    PHP:
    1. <?
    2. $log = $_POST["log"];
    3. $ps = $_POST["ps"];
    4. ?>
    5. <form action = "" method="post"> </form>
    6.   </style>
    7.   <link href="styles.css" rel="stylesheet" type="text/css">
    8. </head>
    9. <body>
    10.   <div id="container" style="height:100%;">
    11. <div id="header">Интернет магазин</div>
    12.  
    13. <div id="menu">
    14. <ul class="hr">
    15. <li> <a href="polzovateli.php">Пользователи</a></li>
    16. <li>Клиенты</li>
    17. <li><a href="tovari.php">Товары</a></li>
    18. <li><a href="zacazi.php">Заказы</a></li>
    19. <li><a href="index.php?a=1">Выход</li></a>
    20. <?
    21. if (isset($_GET["a"])){
    22.     unset($_session['uid']);
    23. }
    24. ?>
    25. </ul>
    26.  
    27.    </div>
    28.      <h2 class="h2" align="center" >Редактирование клиента</h2>
    29.      <div id="table" style="height:450px">
    30. <div id="sort" style="height:250px">
    31.    <form action = "" method="post">
    32.    <?
    33. mysql_connect("localhost","root","");
    34.     mysql_select_db("подаривидео.рф");
    35.     $№=$_GET['№'];
    36.  
    37.  
    38.    
    39.     if (isset($_POST['№'])){
    40.         $№=$_POST['№'];
    41.         $FIO=$_POST['FIO'];
    42.         $City=$_POST['City'];
    43.         $Telephone=$_POST['Telephone'];  
    44.         $Adres=$_POST['Adres'];
    45.         $mail=$_POST['mail'];
    46.         $query="UPDATE `klient` SET `FIO`='$FIO',`City`='$City',`Telephone`='$Telephone',`Adres`='$Adres',`mail`='$mail' WHERE `№`=`$№`";
    47.         mysql_query($query);
    48.         echo'<script language="JavaScript">  window.location.href = "k.php" </script>';
    49.     }
    50.     //формируем запрос к таблице с заказами
    51.    
    52.    
    53.  
    54.  
    55.     $query="SELECT `klient`.* FROM `klient` WHERE `№`='$№' ";
    56.     mysql_query($query);
    57.     $result=mysql_query($query);
    58.     $row=mysql_fetch_array($result);
    59.    
    60.     ?>
     
  8. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    @Natali94 я ничего не понял, в чём там проблема

    так это лучше в раздел free-lance за деньги, раз срочно
     
  9. musk melov

    musk melov Новичок

    С нами с:
    11 июл 2016
    Сообщения:
    1
    Симпатии:
    0
    Подскажите что в коде не хватает

    Жалуеться на mysql_fetch_array() expects parameter 1 to be resource, boolean given in Z:\home\localhost\www\test\index1.php on line 29
    Код (Text):
    1. <?php
    2.     $db=mysql_connect("localhost", "tutorial","123");
    3.         mysql_select_db("tutorial",$db);
    4.  
    5.     if(isset($_POST['button'])){
    6.         $login=$_POST['login'];
    7.         $password=$_POST['password'];
    8.             }
    9.         $query=mysql_query("SELECT*form users WHERE login='$login' ");
    10.         $myrow=mysql_fetch_array($query)or die(mysql_error());
    11.         if($login==$myrow['login']){
    12.             if($password==$myrow['password']){
    13.                 echo"vi zashli v sistemy,".$login;
    14.             }
    15.             else{
    16.                 echo "paroli ne sovpadaut";
    17.             }
    18.         }
    19.         ?>
    20. [/INDENT][/INDENT]
     
  10. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
  11. denger86.dt

    denger86.dt Новичок

    С нами с:
    30 июл 2016
    Сообщения:
    3
    Симпатии:
    0
    Друзья HELP!!

    Возникла ошибка в админке, на сайте всё отображается корректно,но в админке возникает ошибка. хотя функция Select data используется как для сайта, так и для админки, помогите пожалуйста устранить!


    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\OpenServer\domains\emerald-space\db_fns.php on line 29
     
    #61 denger86.dt, 31 июл 2016
    Последнее редактирование модератором: 31 июл 2016
  12. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    запрос в бд не выдал результата и обломился. это не обязательно связано с кодом.
     
  13. denger86.dt

    denger86.dt Новичок

    С нами с:
    30 июл 2016
    Сообщения:
    3
    Симпатии:
    0
    спасибо большое за ответ! в бд поля существуют,написаны правильно.. с чем еще это может быть связано? мучаюсь уже который день(
     
  14. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    Это может быть код, но не тот, который лезет в бд, а тот, который передаёт в запрос неправильные параметры. Например вместо номера статьи передаётся ничего. =) Тогда конечно запрос не сработает.

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

    Хз.
     
  15. denger86.dt

    denger86.dt Новичок

    С нами с:
    30 июл 2016
    Сообщения:
    3
    Симпатии:
    0
    Спасибо большое за ответ! буду разбираться(
     
  16. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    @denger86.dt ошибка гласит, что mysql_fetch_array() первым аргументом получила тип переменной boolean, с большой вероятностью, ты передаёшь в mysql_fetch_array() результат выполнения mysql_query() и по документации mysql_query() может в случаи ошибки вернуть FALSE вместо результата, по этому перед вызовом mysql_fetch_array() надо проверить результата mysql_query(), можно просто if(), потом ещё узнать был ли результат не нулевой, только после этого вызывать mysql_fetch_array(), вот так по хорошему две проверки перед вызовом mysql_fetch_array(), одна через if() вторая mysql_num_rows() на больше нуля.
     
  17. Kelebra

    Kelebra Новичок

    С нами с:
    18 апр 2017
    Сообщения:
    8
    Симпатии:
    0
    Доброго времени суток всем! у меня возникла следующая проблема что только не пытался когда прочитал на форуме все попытки исправить ошибки, особо ничего не получилось, может у меня что то не так с целым кодом?
    ошибка на странице выходит следующая:
    Warning: mysql_result() expects parameter 1 to be resource, boolean given in C:\Apache24\htdocs\ej\www\db\mysql.php on line 21

    Warning: mysql_result() expects parameter 1 to be resource, boolean given in C:\Apache24\htdocs\ej\www\db\mysql.php on line 21

    Warning: mysql_result() expects parameter 1 to be resource, boolean given in C:\Apache24\htdocs\ej\www\db\mysql.php on line 21
    38 / 432 /
    PHP:
    1. <?php
    2. function db_connect($hostname,$username,$password,$dbname){
    3.   $con = mysql_connect($hostname,$username,$password);
    4.   mysql_select_db($dbname,$con);
    5.   mysql_query('SET NAMES cp1251', $con);
    6.   return $con;
    7.  
    8.  
    9. }
    10. function db_close(){
    11.     mysql_close();
    12. }
    13.  
    14. function db_query($sql,$con) {
    15.     $res=mysql_query($sql,$con);
    16.     return $res;
    17. }
    18. function db_result($res,$row,$field)
    19. {
    20.     $mix = mysql_result($res,$row,$field);
    21.     return $mix;
    22. }
    23. function db_fetch_array($res) {
    24.     $myarray = array();
    25.     $myarray = mysql_fetch_array($res);
    26.     return $myarray;
    27. }
    28. function db_num_rows($res) {
    29.     $rows=mysql_num_rows($res);
    30.     return $rows;
    31. }
    32.  
    33. function db_fetch_row($res) {
    34.     $myarray=mysql_fetch_row($res);
    35.     return $myarray;
    36. }
    37. function db_fetch_object($res) {
    38.     $obj = mysql_fetch_object($res);
    39.     if($obj) return $obj;
    40.     else return false;
    41. }
    42. function db_data_seek($res) {
    43.     if (mysql_num_rows($res)>0) mysql_data_seek($res, 0);
    44. }
    45. ?>
     
    #67 Kelebra, 18 апр 2017
    Последнее редактирование модератором: 18 апр 2017
  18. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    @Kelebra ты можешь посчитать тангенс угла от слова "счастье"? Нет, потому что нужны цифры, только их принимает формула.
    У тебя с PHP та же ситуация, ты что-то не то передал в функцию mysql_result(), и тебе даже указывают что именно! Вот это сервис, как в лучших ресторанах.
    Начнём с документации, этой функции https://secure.php.net/manual/ru/function.mysql-result.php
    Первое что мы видим это огромное красное предупреждение! Что надо прекратить использовать mysql_result и перейти на mysqli_result или PDO.
    Но будем работать с чем, что есть, а то ещё обвинят, что ничего не умею, как обычно делают.
    Вернёмся к ошибке, телепаты в отпуске, по этому я не знаю если ты знаешь английский и просто переведём ошибку через google translate
    google translate почти справился, что обычно происходит не всегда.
    mysql_result первым параметром ожидает ресурс, идём в документацию и по mysql_result и смотрим раздел "Список параметров", там первым параметром
    вот нам, подсказывают, что мы должны первым параметром результат выполнения mysql_query предать в mysql_result во как оно.
    Смотрим уже документацию по mysql_result https://secure.php.net/manual/ru/function.mysql-query.php, но уже раздел "Возвращаемые значения" так как мы работаем с значениями которые она возвращает, чтобы использовать в mysql_result.
    И что мы видим?
    и
    Вот подстава, заметил, что mysql_result принимает только тип переменной resource, а mysql_query может вернуть resource, и boolean (TRUE, FALSE).
    Значит в 21 строке кода, где произошла ошибка, вернулся FALSE или TRUE и его не надо бездумно подставлять первым параметром к mysql_result.
    Если у тебя в SQL запросе SELECT, выборка данных, то проверяй если mysql_query вернула resource, если ты точно знаешь что там у тебя SELECT то можно просто на true проверить что mysql_query вернула его
    https://secure.php.net/manual/ru/function.mysql-query.php#refsect1-function.mysql-query-examples
    PHP:
    1. $result = mysql_query('SELECT * WHERE 1 = 1');
    2. if (!$result) {
    3.     die('Неверный запрос: ' . mysql_error());
    4. }
    Вывод, перед тем как идти дальше после mysql_query проверь если она вернула TRUE/RESOURCE и после этого ещё проверь если в результате есть результаты (больше нуля) https://secure.php.net/manual/ru/function.mysql-num-rows.php если их больше нуля, потом mysql_result и тоже проверяй если mysql_result вернула не FALSE.
    Ещё один вывод, mysql_* удалили уже в PHP 7 и предупреждали ещё с PHP 5, так что переходи на mysqli_* или PDO.
     
    #68 denis01, 18 апр 2017
    Последнее редактирование: 18 апр 2017
    Kelebra нравится это.
  19. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    boolean это тип такой. там либо тру, либо фалс. Обычно там фалс. И обычно это значит, что запрос обломился. Т.е. что-то в запросе или в бд.
     
    Kelebra нравится это.
  20. Kelebra

    Kelebra Новичок

    С нами с:
    18 апр 2017
    Сообщения:
    8
    Симпатии:
    0

    Самый прикол в том что в целом код работает, и все данные предоставляет, поскольку все данные в базу вбиваются пользователями через формы и отправляются на сервер. Сразу скажу что код писал не я, это написано еще до меня в году так 2000-2002, я лишь пришел и пытаюсь разобраться со всем этим гемором (проект "электронный журнал " колледжа). Здесь очень много чего не работает, и моя задача что бы это заработало!!!! пока что вышел из положения следующим образом
    Код (Text):
    1. error_reporting('E_ALL');
    2. ini_set('display_errors','Of');
    дабы эти 3 строчки не мозолили глаза пользователям! но все равно думаю что ошибку нужно решать!!!
    Большое спасибо тем кто откликнулся! буду искать копать и проверять!
     
  21. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
  22. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    если нет защиты от инъекций, то крашить запросы могут кавычки в значениях полей.
     
  23. Lordu

    Lordu Новичок

    С нами с:
    21 мар 2018
    Сообщения:
    1
    Симпатии:
    0
    Всем привет. помогите пожалуйста устранить ошибку
    Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in Z:\home\test1.ru\www\admin\field.php on line 370

    Код (Text):
    1. if($rr['field'])
    2. $titl="Редактирование поля: ".$rr['field'];
    3. else
    4. $titl="Добавления поля";
    5.  
    6. require ('top.php');
    7.  
    8.  
    9. if($_REQUEST['add'])
    10.     {
    11.     echo '<h3>СПРАВКА</h3>';
    12.  
    13.     $m = mysqli_query($connect, "SHOW COLUMNS FROM ".$database.".board");
    14.     while($mm = mysqli_fetch_array($m))                                    370 строчка
    15.         {
    16.         $b = explode($arr_typ_field[$field_typ][3], $mm[0]);
    17.         if(count($b)>1)
    18.             {
    19.             $arr_field[] = $mm[0];
    20.             $arr_num[] = $b[1];
    21.             }
    22.         }
    23.  
    24.  
    25.     if($arr_num)
    26.         {
    27.         $max=max($arr_num);
    28.         $field_after = $arr_typ_field[$field_typ][3].$max;
    29.         $field_new = $arr_typ_field[$field_typ][3].($max+1);
    30.         }
    31.     else
    32.         {
    33.         $field_after = 'id_catalog';
    34.         if($arr_typ_field[$field_typ][5]=='sp' || $arr_typ_field[$field_typ][5]=='dp')
    35.         $field_new = $arr_typ_field[$field_typ][3];
    36.         else
    37.         $field_new = $arr_typ_field[$field_typ][3].'1';
    38.         }
    39.  
    40.     echo 'Доступные поля для типа <font color='.$arr_typ_field[$field_typ][1].'>'.$arr_typ_field[$field_typ][0].'</font> в таблице '.$catalog_typ.': <br>';  
    41.  
    42.     if(!$arr_field)
    43.     echo '<font color=red>Нет доступных полей</font><br>';
    44.  
    45.     else
    46.         {
    47.         foreach($arr_field as $af)  
    48.             {
    49.             echo '<font color=green>'.$af."</font><br>";
    50.             }
    51.  
    52.  
    53.         echo 'Занятые поля для данного типа в текущем каталоге: <br>';  
    54.  
    55.         $q="SELECT * FROM field WHERE (field_field  REGEXP '[[:<:]]".$arr_typ_field[$field_typ][3]."' OR field_field_two  REGEXP '[[:<:]]".$arr_typ_field[$field_typ][3]."') AND id_catalog='".$id_catalog."'";
    56.         $r1=mysqli_query($connect, $q);
    57.  
    58.  
    59.         while ($rr1=mysqli_fetch_array($r1))
    60.             {
    61.             if($rr1['field_field'])
    62.             $arr_tab[] = $rr1['field_field'];
    63.             if($rr1['field_field_two'])
    64.             $arr_tab[] = $rr1['field_field_two'];
    65.             }
     
  24. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    запрос обломился и в переменной сидит false