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

Форум Apache

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

 

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

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

тема: Fatal error: Call to undefined function mysql_query()
 
 автор: dimach99   (25.09.2006 в 01:16)   письмо автору
 
 

Всем привет!

Сейчас грызу PHP по книге "Самоучитель PHP5" Кузнецова-Симдянова. Для начала глубокий респект авторам - нечасто встречаются проекты, которые, мало того, что созданы компетентными и увлеченными людьми, а еще и поддерживаются в должном состоянии и кондиции.

Итак, о проблеме. Следуя пошажным мануалам, скачал и установил все компоненты PHP 5.2.0 + Apache 2.2.3 + MySQL 5.0.24. Не с первого раза, но вроде все встало на свои места (по-крайней мере, мне так показалось). Начал долбить по сэмплам. Все идет как надо, все получается. Начинаю ощущать себя гугу (или гурой?). Дошел до стр.80, листинг 4.9. - Функция mysql_query($query). запускаю файл - бамс... Выдает "Fatal error: Call to undefined function mysql_query()". Хм...

Начинаю юзать поиск. Дошел до статьи http://www.softtime.ru/info/articlephp.php?id_article=24 Отутюжил ее несколько раз. Нашел древний топик со схожей проблемой http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=895 Перебрал все варианты с перестановкой PHP в C:\PHP и сопутствующими изменениям в файле php.ini Глухо все...

Help, please!

Жду ответов, с уважением к создателям проекта и всем форумчанам

   
 
 автор: glsv (Дизайнер)   (25.09.2006 в 07:08)   письмо автору
 
   для: dimach99   (25.09.2006 в 01:16)
 

Посмотрите статью по ссылке

http://www.softtime.ru/article/index.php?id_article=98

   
 
 автор: dimach99   (25.09.2006 в 23:38)   письмо автору
 
   для: glsv (Дизайнер)   (25.09.2006 в 07:08)
 

Большое спасибо, статья очень помогла!

Моя ошибка заключалась в том, что я редактировал только файл php.ini, находящийся в c:/windows, а про тот, что находится в папке php совсем забыл. Да и в первом слэши ставил не "/", а "\". Теперь система проходит все тесты, описанные в статье.

Но возникла новая проблема: в этом же самом примере, стало выдавать следующие ошибки

Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\query_01.php on line 3

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\query_01.php on line 3

А 3-я строка имеет вид if(mysql_query($query))

Что опять не ладно? Паролей я никаких не устанавливал, в проверочном скрипте есть строка $dbpasswd = "";

В проверке phpinfo, в таблице "MySQL Support" есть графы "Active Persistent Links 0" "Active Persistent Links 0"

Жду ваших мнений!

   
 
 автор: glsv (Дизайнер)   (26.09.2006 в 05:20)   письмо автору
 
   для: dimach99   (25.09.2006 в 23:38)
 

А где у Вас происходит подключение к MySQL и выбор базы данных?
Функции mysql_connect() и mysql_select_db().

"Проверочный скрипт" сохраните, например, под именем config.php и подключайте его в каждый файл, в котором Вы намереваетесь работать с базой данных.

<?php
  
// Подключаемся к базе данных
  
require_once("config.php");

  
// Пишем запрос
  
$query "SELECT * ...";
  
// Выполняем запрос
  
if(mysql_query($query))....

   
 
 автор: dimach99   (26.09.2006 в 10:07)   письмо автору
 
   для: glsv (Дизайнер)   (26.09.2006 в 05:20)
 

М-м-м...

Что-то никак сообразить не могу, как это применить на практике. Можно как-нибудь поподробнее, и, в частности, применительно к вышеуказанному примеру из листинга 4.9

Спасибо.

   
 
 автор: glsv   (26.09.2006 в 10:44)
 
   для: dimach99   (26.09.2006 в 10:07)
 

Книги под рукой нет. Выложите код в форум. Хотя бы только первые несколько строк.

   
 
 автор: dimach99   (26.09.2006 в 10:48)   письмо автору
 
   для: glsv   (26.09.2006 в 10:44)
 

Да он коротенький совсем:

<?php

if(mysql_query($query))
    {
        echo
"<p>Данные успешно занесены в базу данных.<p>";
    }
?>

   
 
 автор: glsv (Дизайнер)   (26.09.2006 в 11:08)   письмо автору
 
   для: dimach99   (26.09.2006 в 10:48)
 

1. У вас нет подключения к базе данных (см. предыдущий пост).
2. В переменной $query должен быть записан запрос. А она у Вас пустая.

   
 
 автор: dimach99   (29.09.2006 в 15:27)   письмо автору
 
   для: glsv (Дизайнер)   (26.09.2006 в 11:08)
 

Только сейчас добрался до компа. Еще раз все проверил по порядку:

1. В файле httpd.conf прописал, где находится файл php.ini. В моем случае - это PHPIniDir “C:/Home_server/PHP5”
2. Запускаю http://localhost/phpinfo.php. Все работает, только инфу по php.ini в фиолетовых полях выдает в таком виде C:\Home_server\PHP5\php.ini, т.е. с обратными слешами. Но на скриншоте в статье я видел то же самое, так что вроде все правильно.
3. Смотрим файл php.ini.
а) extension_dir = "C:/Home_server/PHP5/ext" - все правильно;
б) extension=php_mysql.dll - раскомментировали;
в) дополнительную библиотеку libmysql.dll из директории c:/php в директорию c:/windows/system32 - скопировали;
4. Apache перезагрузили, в phpinfo появился раздел с именем MySQL
5. «Пуск» | «Панель Управления» | «Администрирование» | «Службы». Нашли службу с именем MySQL и убедились, что она находится в состоянии работы (третий столбец таблицы).
6. Выполнили проверочный php-скрипт, на выходе получили номер версии MySQL - 5.0.24-community-nt

По поводу совета сохранить проверочный скрипт под именем config.php и подключать его в каждый файл, в котором намереваемся работать с базой данных. Если я правильно понял, этот код:

 <?php   
  $dblocation 
"127.0.0.1";   
  
$dbname "test";   
  
$dbuser "root";   
  
$dbpasswd "";   

  
$dbcnx mysql_connect($dblocation$dbuser$dbpasswd);   
  if (!
$dbcnx)   
  {   
    echo 
"<p>К сожалению, не доступен сервер mySQL</p>";   
    exit();   
  }   
  if (!
mysql_select_db($dbname,$dbcnx) )   
  {   
    echo 
"<p>К сожалению, не доступна база данных</p>";   
    exit();   
  }   
  
$ver mysql_query("SELECT VERSION()");   
  if(!
$ver)   
  {   
    echo 
"<p>Ошибка в запросе</p>";   
    exit();   
  }   
  echo 
mysql_result($ver0);   
?> 



Тогда пример их листинга 4.9 имеет вид:

<?php

    
// Подключаемся к базе данных
    
require_once("config.php");

    
// Пишем запрос
    
$query="SELECT  base1";

    
// Выполняем запрос
                     
if(mysql_query($query))
    {
        echo
"<p>Данные успешно занесены в базу данных.<p>";
    }

?>


Запускаем, на выходе опять получаем версию MySQL - 5.0.24-community-nt
base1 я написал "от фонаря", никакой такой базы у меня нет. Как ее создать? И вообще, что, кроме этого я сделал не так?

P.S. Где все-таки должен быть файл php.ini - только в папке PHP или еще одновременно в c:/windows/ ?

   
 
 автор: Максимыч   (29.09.2006 в 16:32)   письмо автору
 
   для: dimach99   (29.09.2006 в 15:27)
 

Ну во-первых удали из первого файла эти строки:

<?php
$ver 
mysql_query("SELECT VERSION()");    
  if(!
$ver)    
  {    
    echo 
"<p>Ошибка в запросе</p>";    
    exit();    
  }    
  echo 
mysql_result($ver0);    
?>

Чтоб не показывалась версия MySQL
Во-вторых создай БД и таблицу в ней. Это очень просто можно сделать с помощью скрипта phpmyadmin. Скачай его, залей в папку куда у тебя настроен Апач (DocumentRoot) и юзай на здоровье. Если этот вариант для тебя затруднителен, то можно пользоваться консолью mysql. Нажми кнопку Пуск -> Выполнить Там введи cmd. Появилась консоль. Вводи там путь к файлу mysql.exe (он лежит в папке bin там куда ты её устанавливал). Например:

С:/MySQL/bin/mysql.exe

с ключами -u root -p. Т.е. вводишь:

С:/MySQL/bin/mysql.exe -u root -p

Он запросит у тебя пароль рута. Ты его назначал при установке MySQL. Вводишь пароль. Если всё нормально и ты вошёл в консоль, создавай сначала БД. Вводи например

CREATE DATABASE test;

Создатся БД с именем test. Далее выбираешь её. Вводишь:

use test;

И создаёшь в ней таблицу с нужными полями. Например:

CREATE user (
id TINYINT NOT NULL auto_increment;
user VARCHAR(20) DEFAULT NULL;
pass VARCHAR(20);
PRIMARY KEY('id');
)
Engine=MyIsam;

У тебя теперь создана таблица user с тремя полями. Можешь вставить в неё пару значений:

INSERT INTO user VALUES (0,'Вася','123');
INSERT INTO user VALUES (0,'Петя','456');

Теперь возвращайся к своему второму скрипту и правь его

<?php 

    
// Подключаемся к базе данных 
    
require_once("config.php"); 

    
// Пишем запрос 
    
$query="SELECT * FROM user "
    
    
// Выполняем запрос 
    
$dbx=mysql_query($query);
    while (
$mas=mysql_fetch_array($dbx)) 
    { 
        echo 
"Имя: ".$mas['user']." Пароль: ".$mas['pass']."<br>" 
    } 
 
?> 


И усё. На выходе получишь список пользователей и паролей.

PS: Да простят меня профи если чё не так написал. Я ещё новичок в PHP :-)

   
 
 автор: dimach99   (29.09.2006 в 23:45)   письмо автору
 
   для: Максимыч   (29.09.2006 в 16:32)
 

Спасибо за ответ, но...

Убрал из проверочного скрипта кусок кода, который ты посоветовал, на выдаче перестала появляться версия мускула.

Зашел в консоль. набрал CREATE DATABASE test; в ответ выдает ERROR 1007 <HY000>: Can't create database 'test'; database exists.

На этом и остановился. Есть еще мнения?

   
 
 автор: glsv (Дизайнер)   (30.09.2006 в 08:00)   письмо автору
 
   для: dimach99   (29.09.2006 в 23:45)
 

>На этом и остановился. Есть еще мнения?
База с именем test уже существует (ее создавать не нужно). Продолжайте дальше по инструкции Максимыч-а.

   
Rambler's Top100
вверх

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