В коде не могу разобраться почему скрипт не выводит картинки. А выдает ошибку » Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:OpenServerdomainslocalhostlessonsphpindex.php on line 33″
Ошибка как вы поняли находится на 33 строчке или на 36, просто код скопировал без html каркаса.
$connection = mysql_connect('localhost', 'Heartofprogramme', '123321');
$db = mysql_select_db('test_db');
if(!$connection || !$db){
exit(mysql_close());
}
$result = mysql_query(" SELECT * FROM news LIMIT 3");
mysql_close();
while($row = mysql_fetch_assoc($result)): ?>
<div class="items_news">
<h1><? echo $row['title']?></h1>
<p class="text"><? echo $row['text']?></p>
<p class="date">Дата публикации: <? echo $row['date']?></p>
<p class="time">Время публикации: <? echo $row['time']?></p>
<p class="author">Автор статьи: <? echo $row['author']?>
</div>
<? endwhile;
// Код картинки!
$connection = mysql_connect('localhost', 'Heartofprogramme', 'ahmedborec');
$db = mysql_select_db('test_db');
if(!$connection || !$db){
exit(mysql_close());
}
$result_two = mysql_query(" SELECT * FROM img where order by id ");
mysql_close();
while($row_two = mysql_fetch_assoc($result_two)){
$avatar = $row_two['avatar'];
$description = $row_two['description'];
echo "
<img src='avatar/$avatar'>
<p>$description</p>
";
}
?>
-
Вопрос заданболее трёх лет назад
-
7500 просмотров
$result_two = mysql_query(" SELECT * FROM img where order by id ");
ошибка в синтаксисе, уберите where или добавьте условие.
Пригласить эксперта
Так вы сначала соединение закрыли, а потом пробуете оттуда что-то достать…
И выбросьте mysql, используйте mysqli.
$result = mysql_query($connection, " SELECT * FROM news LIMIT 3");
Начнем с того, что $result_two=false. Почему? А потому, что ошибка при запросе. Не учили после каждого query проверять на ошибки?
Почему ошибка при запросе? Потому что не пишут «Выбрать все из ньюс где сортировать», на кой там where?
И последнее. Зачем верите тостеру, больше чем документации?
Вам пишут mysql_query($connection… и вы слепо пробуете, хотя в документации четко сказано mysql_query(query_string).
-
Показать ещё
Загружается…
04 июн. 2023, в 01:35
1500 руб./за проект
04 июн. 2023, в 01:25
40000 руб./за проект
03 июн. 2023, в 23:42
1500 руб./за проект
Минуточку внимания
Данная ошибка возникает тогда, когда запрос к базе данных, переданные в параметре функции mysql_fetch_assoc
вернул неудачу( FALSE ), вместо набора записей из БД или успеха( при модификации набора данных, например ), TRUE. Сам запрос выглядит немножко подозрительно. Это, наверное, потому, что я не знаю структуры вашей таблицы. А этот блок кода вообще ужасен:
unset($func_get_args[0]);
$fields = '`' . implode('`, `', $func_get_args) . '`'; // здесь вы, не окажется запятых между полями...скорее, потому и ошибка. И вообще, возьмите к примеру, первое поле массива. Оно будет такого вида в миссиве **'`field'**, потому что это **'`, `'** не всегда будет верно...
$data = mysql_fetch_assoc(mysql_query("SELECT $fields FROM `users` WHERE `user_id` = $user_id"));
Одно только:
$fields = '`' . implode('`, `', $func_get_args) . '`';
Сколько печали мне принесло…
Попробуйте заменить на это:
unset($func_get_args[0]);
$fields = implode(',', $func_get_args); // бьем поля по запятым, вместо вашего ужаса.
$fields = mysql_real_escape_string($func_get_args[0]); // подготавливаем к запросу.
$data = mysql_fetch_assoc(mysql_query("SELECT $fields FROM `users` WHERE `user_id` = $user_id")); // запросим
А вообще лучше не создавать себе геморроя с этими полями, ведь можно выделить все поля, это будет работать практически также быстро, как и ваш implode()…
Here there are two things you have to notice :
1) the warning with mysql_fetch_assoc() .
This warning will occur when the argument passed to it is not an vaide mysql resource ,ie,
the mysql_connect() returned null object(failed to return conection object) . This inturn is caused due to fact that arguments passed to mysql_connect() are bad database credentials.
this case is usualy traped by using
is_resource($con)
call which returns true if $con is an valid resource.
2) The error as described in the error discription is due to bad syntax of query.
"SELECT * FROM logs WHERE log_name='$report_id"
here you ommited closing brace for $report_id
"SELECT * FROM logs WHERE log_name='$report_id'"
3) data base access :
An generel method of accesing database is by using an class , that access the database credentials through Accessor methods like setUname() , SetPasswd() etc , where the method itself will trim , escape and sanitize the credentials before it is passed to database.
this will prevent sql injection attack
In this guide, we will discuss how to fix the mysql_fetch_assoc()
error that occurs when the first parameter is expecting a resource instead of a boolean. This error usually occurs when there is a problem with the SQL query, and the mysql_query()
function returns false
. We will go through the possible causes of this issue and provide step-by-step solutions to resolve the error.
Table of Contents
- Understanding the Error
- Identifying the Causes
- Step-by-Step Solutions
- FAQs
- Related Links
Understanding the Error
The mysql_fetch_assoc()
function is used to fetch a result row as an associative array in PHP. The function expects a resource as its first parameter, which is obtained from the mysql_query()
function. If the mysql_query()
function returns false
, it indicates that there is an error in the SQL query, and the mysql_fetch_assoc()
function will generate the following error:
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given
Identifying the Causes
There are several possible causes for this error. Some of the most common reasons are:
- Syntax errors in the SQL query
- Incorrect table or column names
- Insufficient user privileges for the database
- Connection to the database has not been established
Step-by-Step Solutions
To resolve the mysql_fetch_assoc()
error, follow the steps below:
Step 1: Check SQL Query Syntax
Make sure your SQL query syntax is correct. You can verify the syntax by running the query directly in your database management tool (e.g., phpMyAdmin). If there are any syntax errors, correct them and update the query in your PHP code.
Step 2: Verify Table and Column Names
Ensure that the table and column names used in the SQL query match the actual names in your database. Table and column names are case-sensitive, so make sure to use the correct case.
Step 3: Check User Privileges
Verify that the database user has the necessary privileges to execute the SQL query. You can check the user’s privileges in your database management tool or by running a SHOW GRANTS
query in your SQL console.
Step 4: Establish Database Connection
Make sure you have established a connection to the database before executing the SQL query. Use the mysql_connect()
function to connect to the database and the mysql_select_db()
function to select the desired database.
$connection = mysql_connect("localhost", "username", "password");
mysql_select_db("database_name", $connection);
After following these steps, your mysql_fetch_assoc()
error should be resolved.
FAQs
Why is the mysql_*
function deprecated?
The mysql_*
functions are deprecated since PHP 5.5.0 and removed in PHP 7.0.0. These functions are replaced with the more secure and efficient alternatives like MySQLi and PDO. It is recommended to use these alternatives for better security and performance.
How can I switch to MySQLi from the deprecated mysql_*
functions?
To switch to MySQLi, you can follow these steps:
- Replace
mysql_connect()
withmysqli_connect()
. - Replace
mysql_select_db()
withmysqli_select_db()
. - Replace
mysql_query()
withmysqli_query()
. - Replace
mysql_fetch_assoc()
withmysqli_fetch_assoc()
. - Update other
mysql_*
functions with their respective MySQLi counterparts.
How can I display the actual error message from the SQL query?
To display the actual error message from the SQL query, you can use the mysql_error()
function as follows:
$result = mysql_query($query);
if (!$result) {
die('Error: ' . mysql_error());
}
How can I prevent SQL injection in my PHP code?
To prevent SQL injection, you should use prepared statements or parameterized queries. These features are available in both MySQLi and PDO. By using prepared statements, you can avoid including user input directly in the SQL query, which reduces the risk of SQL injection attacks.
Can I use the mysql_fetch_assoc()
function with other database systems, such as PostgreSQL or SQLite?
The mysql_fetch_assoc()
function is specific to the deprecated MySQL extension in PHP. To work with other database systems, you should use the appropriate PHP extension, such as PDO or the specific extension for the database system (e.g., pg_fetch_assoc()
for PostgreSQL).
- PHP: MySQL (Original) — Manual
- PHP: MySQLi — Manual
- PHP: PDO — Manual
- How to Fix PHP Deprecated Features
Note: This guide is for educational purposes only, and it is recommended to switch to the more secure and efficient MySQLi or PDO extensions for working with databases in PHP.
LLIAKAJI 0 / 0 / 2 Регистрация: 06.01.2012 Сообщений: 71 |
||||
1 |
||||
22.07.2012, 12:47. Показов 19806. Ответов 16 Метки нет (Все метки)
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:webxampphtdocswwwcorefunctionsusers.php on line 12
0 |
KOPOJI Почетный модератор 16842 / 6720 / 880 Регистрация: 12.06.2012 Сообщений: 19,967 |
||||||||
22.07.2012, 13:05 |
2 |
|||||||
бог ты мой..
поменяйте на хотя бы вот такое..
0 |
0 / 0 / 2 Регистрация: 06.01.2012 Сообщений: 71 |
|
22.07.2012, 13:09 [ТС] |
3 |
теперь другая ошибка Unknown column ‘first_name’ in ‘field list’
0 |
Почетный модератор 16842 / 6720 / 880 Регистрация: 12.06.2012 Сообщений: 19,967 |
|
22.07.2012, 13:11 |
4 |
такая ошибка возникает из за того, что mysql_query вернула не указатель на результат, а boolean (булевый, логический тип) — т.е. false. и этот самый нехороший false пошел дальше в mysql_fetch_assoc(), а тот ну ни в какую не хочет с ним дружить, представляешь?) Добавлено через 1 минуту
0 |
0 / 0 / 2 Регистрация: 06.01.2012 Сообщений: 71 |
|
22.07.2012, 13:11 [ТС] |
5 |
почему на видео уроке дружет, а у меня не дружет?? в базе такое поле есть, а если надо добавить то куда именно?(в коде)
0 |
13207 / 6595 / 1041 Регистрация: 10.01.2008 Сообщений: 15,069 |
|
22.07.2012, 13:12 |
6 |
Если говорит, что нет, значит нет.
0 |
0 / 0 / 2 Регистрация: 06.01.2012 Сообщений: 71 |
|
22.07.2012, 13:13 [ТС] |
7 |
Если говорит, что нет, значит нет. это не аргумент, должно быть логическое объяснение
0 |
KOPOJI Почетный модератор 16842 / 6720 / 880 Регистрация: 12.06.2012 Сообщений: 19,967 |
||||
22.07.2012, 13:14 |
8 |
|||
почему на видео уроке дружет, а у меня не дружет?? она и там бы не дружила, если бы поле с таким именем отстутствовало. проверьте как у вас называется поле в таблице еще раз, и если все одинаково — то сделайте вот так и посмотрите какой запрос уходит в базу:
0 |
LLIAKAJI 0 / 0 / 2 Регистрация: 06.01.2012 Сообщений: 71 |
||||
22.07.2012, 13:16 [ТС] |
9 |
|||
она и там бы не дружила, если бы поле с таким именем отстутствовало. проверьте как у вас называется поле в таблице еще раз, и если все одинаково — то сделайте вот так и посмотрите какой запрос уходит в базу:
string(109) «SELECT `user_id`, `username`, `password`, `first_name`, `last_name`, `email` FROM `users` WHERE `user_id` = 1» вот такое пигет на этот код
0 |
Почетный модератор 16842 / 6720 / 880 Регистрация: 12.06.2012 Сообщений: 19,967 |
|
22.07.2012, 13:17 |
10 |
это не аргумент, должно быть логическое объяснение оно есть. два пути Добавлено через 1 минуту
first_name значит, еще раз — нету такого поля в таблице, оно называется как то по другому.
0 |
0 / 0 / 2 Регистрация: 06.01.2012 Сообщений: 71 |
|
22.07.2012, 13:21 [ТС] |
11 |
оно есть. два пути Добавлено через 1 минуту значит, еще раз — нету такого поля в таблице, оно называется как то по другому. в таблице и в коде все едентично, ведь до этого все выводило! Добавлено через 2 минуты
оно есть. два пути Добавлено через 1 минуту значит, еще раз — нету такого поля в таблице, оно называется как то по другому. в какой именно таблице в БД оно есть
0 |
Почетный модератор 16842 / 6720 / 880 Регистрация: 12.06.2012 Сообщений: 19,967 |
|
22.07.2012, 13:25 |
12 |
в какой именно таблице в БД оно есть а я то откуда это знаю, вы же в запросе пытаетесь из этого поля данные извлечь, а не я. дамп данных мускула вы не предоставляли, экстрасенсы в отпуске, а шар пропили..
0 |
0 / 0 / 2 Регистрация: 06.01.2012 Сообщений: 71 |
|
22.07.2012, 13:28 [ТС] |
13 |
а я то откуда это знаю, вы же в запросе пытаетесь из этого поля данные извлечь. дамп данных мускула вы не предоставляли, экстрасенсы в отпуске, а шар пропили.. какой шар, какие экстрасенсы, я четко и ясно сказал что в БД оно есть, и спросил как добавить first_name в PHP код если надо? вот все поля из ДБ вывод sql `password`SELECT * FROM `users` WHERE 1`user_id`, `username`, `password`, `firsr_name`, `last_name`, `email`, `active`
0 |
Почетный модератор 16842 / 6720 / 880 Регистрация: 12.06.2012 Сообщений: 19,967 |
|
22.07.2012, 13:32 |
14 |
`user_id`, `username`, `password`, `firsr_name`, `last_name`, `email`, `active` вот именно!!! либо в запросе переименуйте на такое название, либо в таблице поле поменяйте на first_name
0 |
0 / 0 / 2 Регистрация: 06.01.2012 Сообщений: 71 |
|
22.07.2012, 13:34 [ТС] |
15 |
вот именно!!! либо в запросе переименуйте на такое название, либо в таблице поле поменяйте на first_name а конкретней как это поменять в запросе и вместо чего?
0 |
Почетный модератор 16842 / 6720 / 880 Регистрация: 12.06.2012 Сообщений: 19,967 |
|
22.07.2012, 13:36 |
16 |
я не знаю где у вас в запросе переменная $fields записывается значениями
0 |
0 / 0 / 2 Регистрация: 06.01.2012 Сообщений: 71 |
|
22.07.2012, 13:40 [ТС] |
17 |
я не знаю где у вас в запросе переменная $fields записывается значениями о спасибо большое, я и не заметил что в БД ошибка, а в коде правильно было написано, вот что значит в час ночи задротничать программированием)
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
22.07.2012, 13:40 |
17 |