Почему не вытаскивается поле из базы?

Тема в разделе "Как сделать...", создана пользователем yura_co, 5 апр 2015.

  1. yura_co

    yura_co Постоялец

    Регистр.:
    30 апр 2008
    Сообщения:
    112
    Симпатии:
    23
    Помогите разобраться. почему не выбирается значение из базы?
    PHP:
    $xml_array_category = array();
         foreach(
    $xml->item as $item){
           
    $xml_array_category[] = $item->category;
         }
    $NEW_xml_array_catalog_id = array();
    $NEW_xml_array_catalog_name = array();

    for(
    $n 0$n $array_length$n++){

    $item_catalog $xml_array_group[$n];
    $queryCatalogName "SELECT*FROM catalog WHERE name='$item_catalog'";
    $resultCatalogName mysqli_query($connect,$queryCatalogName);
    $row_catalog mysqli_fetch_array($resultCatalogName);
    $NEW_xml_array_catalog_id[] = $row_catalog['id'];
    $NEW_xml_array_catalog_name[] = $row_catalog['name'];
    }
    for(
    $i 1$i $array_length$i++){
    $queryExistCategory "SELECT name FROM categories WHERE name='$NEW_xml_array_category_name[$i]'";
    $resultExistCategory mysqli_query($connect$queryExistCategory);
    $row_category_name mysqli_fetch_array($resultExistCategory);
    $row_category_exist mysqli_num_rows($resultExistCategory);
    }
    if(
    $row_category_exist == 0){
        echo 
    '<tr><td>'.$i.'</td><td style="color:red;">Ненайдена категория</td><td>'.$title_change.'</td><td>'.$catalog_name_change.'</td><td>'.$category_name_change.'</td></tr>';

    }
    в файле название есть, в базе тоже, но постоянно выдаёт что поле не найдено
     
    Последнее редактирование модератором: 5 апр 2015
  2. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.450
    Симпатии:
    1.239
    Есть такая волшебная функция var_dump();
    Расставляй её на каждой строке с переменной из предыдущей и анализируй, что получится в результате.

    Если подключить немного логики, то достаточно будет в 3х строках поставить для понимания ошибки:
    PHP:
    for($i 1$i $array_length$i++){
      
    $queryExistCategory "SELECT name FROM categories WHERE name='$NEW_xml_array_category_name[$i]'";
    var_dump($queryExistCategory);
      
    $resultExistCategory mysqli_query($connect$queryExistCategory);
      
    $row_category_name mysqli_fetch_array($resultExistCategory);
      
    $row_category_exist mysqli_num_rows($resultExistCategory);
    var_dump($row_category_exist);
    }

    var_dump($row_category_exist);
    if(
    $row_category_exist == 0){
        echo 
    '<tr><td>'.$i.'</td><td style="color:red;">Ненайдена категория</td><td>'.$title_change.'</td><td>'.$catalog_name_change.'</td><td>'.$category_name_change.'</td></tr>';


     
  3. yura_co

    yura_co Постоялец

    Регистр.:
    30 апр 2008
    Сообщения:
    112
    Симпатии:
    23
    ошибку даёт Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in $row_catalog = mysqli_fetch_array($resultCatalogName);
    но у меня ума не хватает допереть чем ему не нравится mysqli_query($connect,$queryCatalogName);
     
  4. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.450
    Симпатии:
    1.239
    http://php.net/manual/ru/mysqli.query.php
    mysqli_query Возвращает FALSE в случае неудачи.
    Добавь после запроса проверку и выход из итерации:
    PHP:
    if ($resultExistCategory === FALSE) continue; //переход к следующей итерации
    для девелопа используй
    PHP:
    if ($resultExistCategory === FALSE) {
    var_dump($queryExistCategorymysqli_errno($connect), mysqli_error($connect));
     continue;
    }
     
  5. yura_co

    yura_co Постоялец

    Регистр.:
    30 апр 2008
    Сообщения:
    112
    Симпатии:
    23
    эт понятно, перехода мне как раз и не надо, у меня проблема почему не желает вытаскивать с базы поле, всегда отдаёт FALSE
     
  6. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.450
    Симпатии:
    1.239
    много разных может быть причин
    раз выскочил FALSE должен был отработать и
    var_dump($queryExistCategory, mysqli_errno($connect), mysqli_error($connect));
    покажи что вывело
     
  7. yura_co

    yura_co Постоялец

    Регистр.:
    30 апр 2008
    Сообщения:
    112
    Симпатии:
    23
    Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in $row_category = mysqli_fetch_array($resultCategoriesName);
    NULL string(41) "SELECT name FROM categories WHERE name=''" int(0) string(41) "SELECT name FROM categories WHERE name=''" int(0) string(41) "SELECT name FROM categories WHERE name=''" int(0) string(41) "SELECT name FROM categories WHERE name=''" int(0)
     
  8. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.450
    Симпатии:
    1.239
    Где-то до цикла поломана логика
    не существует переменных $NEW_xml_array_category_name[$i]
     
  9. yura_co

    yura_co Постоялец

    Регистр.:
    30 апр 2008
    Сообщения:
    112
    Симпатии:
    23
    $NEW_xml_array_category_id[] = $row_category['id'];
    $NEW_xml_array_category_name[] = $row_category['name'];
    вродь всё есть