<?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) }
Название переменный и таблиц должны быть с другими кавычками (или без оных)
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
$sql = "SELECT * FROM `articles_categories`";
$result = mysqli_query($connection, $sql) or die('<br>Запрос: '. $sql .'<br>Ошибка: '. mysqli_error($connection) );
Цитата (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 @ 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, когда ты обрамляешь значение в обратные одинарные кавычки (обратный апостроф), ты как бы явно говоришь базе данных, что это самое значение ни что иное как название базы данных, таблицы или поля таблицы. Если надо указать всё разом, то такое обращение записывается через точку и обратными апострофами обрамляется каждое значение т.е:
`db_name`.`table_name`.`field_name`
_____________
Стимулятор ~yoomoney - 41001303250491
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.