query("SELECT * FROM table) возвращает пустой объект, хотя таблица есть

$conn = new mysqli("localhost", "root", ""); /// успешное подключение
if ($conn->query("CREATE DATABASE Comics")) {
die ("error: ".$conn->error);
} else {
echo "base created succes<br>";} /// успешное создание базы данных
mysqli_select_db ($conn, "comics"); /// и успешный выбор базы данных

Mysql_select_db("comics") пишет, что не выбирал базу данных, хотя создать таблицу (команды ниже) в ней и даже добавить строки через INSERT INTO получилось. Но не в этом проблема.

$conn->query("CREATE TABLE `Villians` (
    id INT(3) AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(14) NOT NULL,
    byear INT(4)
)"); /// до сюда всё хорошо.
$result = $conn->query("SELECT * FROM `villians`"); /// **Вот проблема!!!**

Она возвращает пустой объект массив:

mysqli_result Object ( )

Ответы (1 шт):

Автор решения: liebeSonne

похоже включена чувствительность к регистру lower_case_table_names

CREATE TABLE Villians тоже не выполняется, просто ошибку не выводит, а дальше просто не находит таблицы при SELECT * FROM villians, потому и пустой результат.

Пробуйте названия таблиц и БД одинаково писать.

upd:

вот пример, который запускал у себя:

//$con = ...

if ($conn->query("CREATE DATABASE Comics")) {
    die ("error: ".$conn->error);
} else {
    echo "\nbase created succes";
}

$r = mysqli_select_db ($conn, "comics");
echo "\nis_connect(comics) : " . ($r ? 'true' : 'false');

$r = mysqli_select_db ($conn, "Comics");
echo "\nis_connect(Comics) : " . ($r ? 'true' : 'false');

$r = $conn->query("CREATE TABLE `Villians` (
    id INT(3) AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(14) NOT NULL,
    byear INT(4)
)");

// првильное соединение
mysqli_select_db ($conn, "Comics");

$result = $conn->query("SELECT * FROM `villians`"); /// **Вот проблема!!!**
echo "\nselect(villians) : " . gettype($result) . ' : ' . ($result ? 'true' : 'false');

$result = $conn->query("SELECT * FROM `Villians`"); /// **Вот проблема!!!**
echo "\nselect(Villians) : " . gettype($result). ' : ' . ($result ? 'true' : 'false');

на выходе:

base created succes
is_connect(comics) : false
is_connect(Comics) : true
select(villians) : boolean : false
select(Villians) : object : true
→ Ссылка