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

yura_co

Профессор
Регистрация
30 Апр 2008
Сообщения
191
Реакции
44
Помогите разобраться. почему не выбирается значение из базы?
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>';

}
в файле название есть, в базе тоже, но постоянно выдаёт что поле не найдено
 
Последнее редактирование модератором:
Есть такая волшебная функция Для просмотра ссылки Войди или Зарегистрируйся
Расставляй её на каждой строке с переменной из предыдущей и анализируй, что получится в результате.

Если подключить немного логики, то достаточно будет в 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х строках поставить для понимания ошибки:
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>';
}
ошибку даёт Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in $row_catalog = mysqli_fetch_array($resultCatalogName);
но у меня ума не хватает допереть чем ему не нравится mysqli_query($connect,$queryCatalogName);
 
ошибку даёт Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in $row_catalog = mysqli_fetch_array($resultCatalogName);
но у меня ума не хватает допереть чем ему не нравится mysqli_query($connect,$queryCatalogName);
Для просмотра ссылки Войди или Зарегистрируйся
mysqli_query Возвращает FALSE в случае неудачи.
Добавь после запроса проверку и выход из итерации:
PHP:
if ($resultExistCategory === FALSE) continue; //переход к следующей итерации

для девелопа используй
PHP:
if ($resultExistCategory === FALSE) {
var_dump($queryExistCategory, mysqli_errno($connect), mysqli_error($connect));
 continue;
}
 
эт понятно, перехода мне как раз и не надо, у меня проблема почему не желает вытаскивать с базы поле, всегда отдаёт FALSE
 
много разных может быть причин
раз выскочил FALSE должен был отработать и
var_dump($queryExistCategory, mysqli_errno($connect), mysqli_error($connect));
покажи что вывело
 
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)
 
Где-то до цикла поломана логика
не существует переменных $NEW_xml_array_category_name[$i]
 
$NEW_xml_array_category_id[] = $row_category['id'];
$NEW_xml_array_category_name[] = $row_category['name'];
вродь всё есть
 
Назад
Сверху