Почему я получаю ошибку Table Doesn’t Exists в PHP с использованием phpMyAdmin и mysql?

#php #mysql #sql

#php #mysql #sql

Вопрос:

Настройка -> Использование host gator, php, phpmyadmin, mysql:

PHP-код (в файле с именем ajaxTest.php ):

 <?php

$con=mysqli_connect("localhost","refinedc_dbadmin","password","refinedc_currency");

// Check connection
if (mysqli_connect_errno()) 
{
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
else
{



$result = mysqli_query($con,"SELECT * FROM ITEMS");

if (!$check1_res) {
    printf("Error: %sn", mysqli_error($con));
    exit();
}

echo '[';

while($row = mysqli_fetch_array($result)) 
{
  echo '{';
  echo '"ID":' . '"' . $row['ID'] . '",';
  echo '"YEAR":' . '"' . $row['YEAR'] . '",';
  echo '"QUANTITY":' . '"' . $row['QUANTITY'] . '",';
  echo '"DENOMINATION":' . '"' . $row['DENOMINATION'] . '",';
  echo '"TYPE":' . '"' . $row['TYPE'] . '",';
  echo '"COUNTRY":' . '"' . $row['COUNTRY'] . '",';
  echo '"COIN_NAME_OR_TITLE":' . '"' . $row['COIN_NAME_OR_TITLE'] . '",';
  echo '"COLLECTIBLE_METAL_ONE":' . '"' . $row['COLLECTIBLE_METAL_ONE'] . '",';
  echo '"COLLECTIBLE_METAL_TWO":' . '"' . $row['COLLECTIBLE_METAL_TWO'];
  echo '},';
}

echo ']';

}
mysqli_close($con);

?>
 

таблица phpmyadmin:
введите описание изображения здесь


уровни доступа mysql для пользователя и базы данных:
введите описание изображения здесь


пользователь добавлен в базу данных:
введите описание изображения здесь


И когда я захожу на страницу, я получаю эту проблему:
введите описание изображения здесь


ОБНОВЛЕНИЕ — изменен SQL для чтения SELECT * ИЗ элементов… Теперь получите это, когда я пытаюсь попасть на страницу (попадает на код ошибки и запускает exit (), но не выводит ошибку: введите описание изображения здесь


Почему я получаю ошибку table does not exist? Я уже сократил имя базы данных и перестроил новое, но оно по-прежнему говорит, что оно не существует!

Комментарии:

1. вы имеете в виду SELECT * FROM items ?

2. @bansi когда я меняю его на нижний регистр, он все равно переходит к проверке ошибок и вызывает ‘exit ()’, но не выводит никаких ошибок…

3. что такое $check1_res ? Я думаю, вам следует использовать if (!$result){

4. Кроме того, вы пытаетесь преобразовать его в json? затем попробуйте использовать json_encode

5. @bansi ты милый ублюдок! это сделало свое дело! Я не слишком уверен, что такое $check1_res, это было на примере php W3schools ….. но ваш способ сработал и вернул мне данные json! Большое вам спасибо. вы должны включить это в ответ со всеми тремя вашими советами, и я выберу его как правильный 😉

Ответ №1:

В именах таблиц Windows не чувствительны к регистру, в то время как в системах * nix имена таблиц чувствительны к регистру.

Host gator, скорее всего, работает в unix, следовательно, если ваша таблица имеет имя

  items
 

вам нужно назвать это как таковое

   $result = mysqli_query($con,"SELECT * FROM items");
 

Комментарии:

1. когда я меняю его на нижний регистр, он по-прежнему переходит к проверке ошибок и вызывает ‘exit()’, но не выводит никаких ошибок…

Ответ №2:

Вот исправленный код. Я добавил комментарий в сам код.

 <?php

$con=mysqli_connect("localhost","refinedc_dbadmin","password","refinedc_currency");

// Check connection
if (mysqli_connect_errno()) 
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
else
{

    $result = mysqli_query($con,"SELECT * FROM `items`");
    // Check if result is ok
    // if there is an error $result will be false and the error details is available in mysqli_error()
    if (!$result) {
        printf("Error: %sn", mysqli_error($con));
        exit();
    }

    // Use json_encode to convert data to json.
    // It is too tedious and error prone to convert data to json by hand.
    $data = array();
    while($row = mysqli_fetch_array($result)) 
    {
        //Store the result to array
        $data[]=array(
            "ID" => $row['ID'],
            "YEAR" => $row['YEAR'],
            "QUANTITY" => $row['QUANTITY'],
            "DENOMINATION" => $row['DENOMINATION'],
            "TYPE" => $row['TYPE'],
            "COUNTRY" => $row['COUNTRY'],
            "COIN_NAME_OR_TITLE" => $row['COIN_NAME_OR_TITLE'],
            "COLLECTIBLE_METAL_ONE" => $row['COLLECTIBLE_METAL_ONE'],
            "COLLECTIBLE_METAL_TWO" => $row['COLLECTIBLE_METAL_TWO']
        );
    }
    //echo the json
    echo json_encode($data);
}
mysqli_close($con);
 

Кстати: не используйте W3schools, если вы действительно хотите учиться и делать это правильно. Многие вещи там устарели и вводят в заблуждение.