Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как сделать глобальным одно подключение к MySQL для функций.
 
 автор: Dr Lines   (22.05.2009 в 13:49)   письмо автору
 
 

На одном из веб серверов столкнулся с такой проблемой, что при исполнении функции с sql запросами внутри, выполняемые посредством mysql_query() выводилась ошибка:
mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO)


Если изобразить схему выполнения максимально упрощенно, то выглядеть это будет примерно так:

include("connect_sql.php"); // Выполнение подключения к базе данных.

function common_func() //функция, с sql запросом внутри.
{
      $q=mysql_query("SELECT COUNT(*) FROM `table` WHERE `set`='1';");//Это выдает ту самую ошибку.
      return mysql_fetch_assoc($q);
}
//Если написать тоже самое вне функции, то выполняется все нормально.


Как решить эту проблему?
p.s.
Просьба варианты с отдельным подключением внутри функции не предлагать. Тоже касается и использования global. Моя цель узнать почему на одних web-серверах это работает, а на других нет. И как сделать, чтобы работало.

  Ответить  
 
 автор: Den*s   (22.05.2009 в 15:32)   письмо автору
 
   для: Dr Lines   (22.05.2009 в 13:49)
 

я не профи, но зачем в кавычки загонять названия полей, я делаю примерно так

$q=mysql_query("SELECT COUNT(*) FROM table WHERE set='1'  ");

без знака ; в конце запроса и без знака `

  Ответить  
 
 автор: Dr Lines   (22.05.2009 в 15:39)   письмо автору
 
   для: Den*s   (22.05.2009 в 15:32)
 

Делаю так, чтобы было более читабельнее. Да и находить потом нужные части кода проще. Если например скрипт на 1000 строчек - и надо везде заменить название полей таблиц. Эти "ненужные кавычки" какраз и помогут.
Все ради удобства.
-------------------
Ну что, кто-нибудь знает как решить мою проблему?

  Ответить  
 
 автор: Loki   (22.05.2009 в 15:46)   письмо автору
 
   для: Den*s   (22.05.2009 в 15:32)
 

попробуйте использовать в качестве имени таблицы зарезервированное слово и расскажите что получится без кавычек

Ваш запрос, к слову, прекрасная иллюстрация вышесказанного - он абсолютно нерабочий, несмотря на то, что Вы утверждаете обратное.

  Ответить  
 
 автор: Dr Lines   (22.05.2009 в 16:29)   письмо автору
 
   для: Loki   (22.05.2009 в 15:46)
 

Дело не в правильности запроса. Я его вообще от "бадлы" нарисовал. Проблема в том что в функциях по каким-то причинам не видно основного подключения к базе данных.
Читайте внимательнее первый пост.

  Ответить  
 
 автор: Loki   (22.05.2009 в 17:16)   письмо автору
 
   для: Dr Lines   (22.05.2009 в 16:29)
 

при чем тут первый пост?

  Ответить  
 
 автор: Dr Lines   (22.05.2009 в 17:40)   письмо автору
 
   для: Loki   (22.05.2009 в 17:16)
 

Я не просил разбирать на правописание макет, который нарисовал только лишь для наглядности проблемы. Проблему уже несколько раз описал. %)

  Ответить  
 
 автор: Loki   (22.05.2009 в 19:16)   письмо автору
 
   для: Dr Lines   (22.05.2009 в 17:40)
 

Да Ваш пост я вообще ни читал. Я не Вам отвечал.

  Ответить  
 
 автор: mihdan   (22.05.2009 в 18:41)   письмо автору
 
   для: Den*s   (22.05.2009 в 15:32)
 

В корне неверно. Знак ` - обязателен, позволит избежать проблеи при именовании таблиц(столбцов)

А по теме:

<?php
$db 
mysql_connect(.....);

....
function 
foo($db) {
   
mysql_query('...'$db);

}
// Или
function foo() {
   global 
$db;
   
mysql_query('...');

}
?>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования