[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Работа с бд
Tardis
<?php
$connection = mysqli_connect('localhost', 'root','', 'test_db');
if($connection == false)
{
echo 'Не удалось подключится к базе данных!<br>';
echo mysqli_connect_error();
exit();
}
$result = mysqli_query($connection, "SELECT * FROM 'articles_categories' ");
//var_dump($result);
$r1 = mysqli_fetch_assoc($result);
print_r($r1);
//Ошибка: Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in W:\domains\mys68ql.loc\index.php on line 13
Вар дамп $результа: bool(false)
Вар дамп $коннекшин: object(mysqli)#1 (19) { ["affected_rows"]=> int(-1) ["client_info"]=> string(79) "mysqlnd 5.0.11-dev - 20120503 - $Id: 15d5c781cfcad91193dceae1d2cdd127674ddb3e $" ["client_version"]=> int(50011) ["connect_errno"]=> int(0) ["connect_error"]=> NULL ["errno"]=> int(1064) ["error"]=> string(167) "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''articles_categories'' at line 1" ["error_list"]=> array(1) { [0]=> array(3) { ["errno"]=> int(1064) ["sqlstate"]=> string(5) "42000" ["error"]=> string(167) "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''articles_categories'' at line 1" } } ["field_count"]=> int(0) ["host_info"]=> string(20) "localhost via TCP/IP" ["info"]=> NULL ["insert_id"]=> int(0) ["server_info"]=> string(6) "5.6.41" ["server_version"]=> int(50641) ["stat"]=> string(131) "Uptime: 719 Threads: 1 Questions: 82 Slow queries: 0 Opens: 70 Flush tables: 1 Open tables: 63 Queries per second avg: 0.114" ["sqlstate"]=> string(5) "00000" ["protocol_version"]=> int(10) ["thread_id"]=> int(24) ["warning_count"]=> int(0) }
Kusss
Название переменный и таблиц должны быть с другими кавычками (или без оных)
SELECT * FROM `articles_categories`
а вот данные в одинарных кавычках
SELECT * FROM `articles_categories` WHERE `name` = 'тест' 

А лучше всего сразу делать отладку в коде (пример)
 $sql = "SELECT * FROM `articles_categories`";
$result = mysqli_query($connection, $sql) or die('<br>Запрос: '. $sql .'<br>Ошибка: '. mysqli_error($connection) );
Tardis
Спасибо большое. Код работает на ура. Всем советую. А этот парень очень умный Kusss
$sql = "SELECT * FROM `articles_categories`";
$result = mysqli_query($connection, $sql) or die('<br>Запрос: '. $sql .'<br>Ошибка: '. mysqli_error($connection) );
Tardis
Цитата (Kusss @ 4.06.2019 - 12:24)
Название переменный и таблиц должны быть с другими кавычками (или без оных)
SELECT * FROM `articles_categories`
а вот данные в одинарных кавычках
SELECT * FROM `articles_categories` WHERE `name` = 'тест' 

А лучше всего сразу делать отладку в коде (пример)
 $sql = "SELECT * FROM `articles_categories`";
$result = mysqli_query($connection, $sql) or die('<br>Запрос: '. $sql .'<br>Ошибка: '. mysqli_error($connection) );

можешь обьяснить что ты сделал? я хочу разобраться что у меня было не так и что ты сделал, дружище? Я про отладку.
Kusss
Хм... я же написал.
У тебя наименование таблицы было в одинарных кавычках, а это ошибка.
Tardis
Цитата (Kusss @ 4.06.2019 - 12:52)
Хм... я же написал.
У тебя наименование таблицы было в одинарных кавычках, а это ошибка.

Я изменил наименование таблицы сейчас ради интереса на двойные:
<?php
$connection = mysqli_connect('localhost', 'root','', 'test_db');
if($connection == false)
{
echo 'Не удалось подключится к базе данных!<br>';
echo mysqli_connect_error();
exit();
}
$result = mysqli_query($connection, "SELECT * FROM "articles_categories"");
var_dump($connection);
$r1 = mysqli_fetch_assoc($result);
print_r($r1);
Выводит ошибку
Parse error: syntax error, unexpected 'articles_categories' (T_STRING) in W:\domains\mys68ql.loc\index.php on line 10
Убрал кавычки из таблицы оставив только двойные на комманду к базе


<?php
$connection = mysqli_connect('localhost', 'root','', 'test_db');
if($connection == false)
{
echo 'Не удалось подключится к базе данных!<br>';
echo mysqli_connect_error();
exit();
}
$result = mysqli_query($connection, "SELECT * FROM articles_categories");
//var_dump($connection);
$r1 = mysqli_fetch_assoc($result);
Без кавычек вообще, все работает, но почему? разве таблицы не нужно указывать в кавычках?
Tardis
Ага, я понял, Таблицы указывать через кавычки которые на букве Ё а не через текстовые кавычки. Спасибо большое что помогли приобрести опыт и во всем разобраться. Вы лучшие
Kusss
в запросах все наименования (таблицы, поля) желательно обрамлять в обратные кавычки. Это сразу оградит от ошибки зарезервированных слов
Valick
Tardis, когда ты обрамляешь значение в обратные одинарные кавычки (обратный апостроф), ты как бы явно говоришь базе данных, что это самое значение ни что иное как название базы данных, таблицы или поля таблицы. Если надо указать всё разом, то такое обращение записывается через точку и обратными апострофами обрамляется каждое значение т.е:
`db_name`.`table_name`.`field_name`


_____________
Стимулятор ~yoomoney - 41001303250491
Tardis
Спасибо большое!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.