1

Тема: Не подключается к БД с помощью конструкции include()

Здравствуйте!
Подскажите пожалуйста, в чем может быть проблема:
когда я соединяюсь с базой с помощью кода 

[mono]<?php
$db = mysql_connect ("localhost", "php", "12345");
mysql_select_db("phpsite", $db);
$result = mysql_query("SELECT title,meta_d,meta_k,text FROM settings WHERE page='index'", $db);
$myrow = mysql_fetch_array($result);
?>[/mono]

сайт открывается без проблем. Но как только я подключаюсь с помощью include:

[mono]<?php
include("blocks/con_mysql.php");
$result = mysql_query("SELECT title,meta_d,meta_k,text FROM settings WHERE page='index'", $db);
$myrow = mysql_fetch_array($result);
?>[/mono],

вверху страницы появляется следующие надписи:

[mono]$db = mysql_connect ("localhost", "php", "12345"); mysql_select_db("phpsite", $db);
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in Z:\home\localhost\www\phpsite\index.php on line 4

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\localhost\www\phpsite\index.php on line 5[/mono]

2

Re: Не подключается к БД с помощью конструкции include()

Scarick
Попробуйте посмотреть что за ошибку выведет mysql_error() сразу после include.

3

Re: Не подключается к БД с помощью конструкции include()

Hanut сказал:

Scarick
Попробуйте посмотреть что за ошибку выведет mysql_error() сразу после include.

[mono]<?php
include("blocks/con_mysql.php");
echo mysql_errno() . ": " . mysql_error();
$result = mysql_query("SELECT title,meta_d,meta_k,text FROM settings WHERE page='index'", $db);
$myrow = mysql_fetch_array($result);

?>[/mono]

не дало никакого результата sad     просто добавилость двоеточие:

[mono]$db = mysql_connect ("localhost", "php", "12345"); mysql_select_db("phpsite", $db);:
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in Z:\home\localhost\www\phpsite\index.php on line 5

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\localhost\www\phpsite\index.php on line 6[/mono]

4

Re: Не подключается к БД с помощью конструкции include()

Временно решил проблему, тем что взял включаемый код, в дополнительный блок php, т.е. в
[mono]<?php
include("blocks/con_mysql.php");
$result = mysql_query("SELECT title,meta_d,meta_k,text FROM settings WHERE page='index'", $db);
$myrow = mysql_fetch_array($result);

?>[/mono]

, con_mysql.php содержит код:

[mono]<?php $db = mysql_connect ("localhost", "php", "12345");
mysql_select_db("phpsite", $db);?>[/mono]

Хотя, на сколько я понял, эта функция должна работать  без блока в блоке.

5

Re: Не подключается к БД с помощью конструкции include()

Scarick сказал:

Хотя, на сколько я понял, эта функция должна работать  без блока в блоке.

Не смог понять. В чем заключается решение проблемы?

6 (изменено: Scarick, 2009-11-13 11:20:27)

Re: Не подключается к БД с помощью конструкции include()

Извиняюсь, сейчас попытаюсь объяснить понятнее.
Говоря "блок в блоке" я имею в виду то что один php блок у нас уже есть:
<?php
include("blocks/con_mysql.php");
$result = mysql_query("SELECT title,meta_d,meta_k,text FROM settings WHERE page='index'", $db);
$myrow = mysql_fetch_array($result);

?>

, и для того чтобы происходило подключение к базе с помощью конструкции include, подключаемый код не обязательно выделять в отдельный php блок, т.е.  в include("blocks/con_mysql.php");   - достаточно чтобы в файле con_mysql.php был код:

php $db = mysql_connect ("localhost", "php", "12345");
mysql_select_db("phpsite", $db);        (без <?php ... ?>).

Но в моем случае это почему-то не работало, заработало только после того как я содержимое файла con_mysql.php выделил в php блок,

[size=16]<?php[/size] $db = mysql_connect ("localhost", "php", "12345");
mysql_select_db("phpsite", $db);[size=16]?>[/size].

В итоге получилась такая запись:


<?php

<?php $db = mysql_connect ("localhost", "php", "12345");
mysql_select_db("phpsite", $db);?>

$result = mysql_query("SELECT title,meta_d,meta_k,text FROM settings WHERE page='index'", $db);
$myrow = mysql_fetch_array($result);

?>

Должно ли быть так?

7

Re: Не подключается к БД с помощью конструкции include()

Scarick сказал:

Должно ли быть так?

Обязательно должно. Весь php код, находится он в подключаемом файле, или нет, должен быть внутри php тега <?php ... ?>, иначе он не будет обработан. В подключаемом коде может быть не только php код, но и обычный html, к примеру, поэтому код в подключаемых файлах не должен ничем отличаться от обычных.

8

Re: Не подключается к БД с помощью конструкции include()

Спасибо.