|
|
|
| Всем привет!
Сейчас грызу 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)
| | Большое спасибо, статья очень помогла!
Моя ошибка заключалась в том, что я редактировал только файл 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"
Жду ваших мнений! | |
|
|
|
|
|
|
|
для: 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))....
|
| |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(26.09.2006 в 05:20)
| | М-м-м...
Что-то никак сообразить не могу, как это применить на практике. Можно как-нибудь поподробнее, и, в частности, применительно к вышеуказанному примеру из листинга 4.9
Спасибо. | |
|
|
|
|
автор: glsv (26.09.2006 в 10:44) |
|
|
для: dimach99
(26.09.2006 в 10:07)
| | Книги под рукой нет. Выложите код в форум. Хотя бы только первые несколько строк. | |
|
|
|
|
|
|
|
для: glsv
(26.09.2006 в 10:44)
| | Да он коротенький совсем:
<?php
if(mysql_query($query))
{
echo"<p>Данные успешно занесены в базу данных.<p>";
}
?>
|
| |
|
|
|
|
|
|
|
для: dimach99
(26.09.2006 в 10:48)
| | 1. У вас нет подключения к базе данных (см. предыдущий пост).
2. В переменной $query должен быть записан запрос. А она у Вас пустая. | |
|
|
|
|
|
|
|
для: 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($ver, 0);
?>
|
Тогда пример их листинга 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/ ? | |
|
|
|
|
|
|
|
для: dimach99
(29.09.2006 в 15:27)
| | Ну во-первых удали из первого файла эти строки:
<?php
$ver = mysql_query("SELECT VERSION()");
if(!$ver)
{
echo "<p>Ошибка в запросе</p>";
exit();
}
echo mysql_result($ver, 0);
?>
|
Чтоб не показывалась версия MySQL
Во-вторых создай БД и таблицу в ней. Это очень просто можно сделать с помощью скрипта phpmyadmin. Скачай его, залей в папку куда у тебя настроен Апач (DocumentRoot) и юзай на здоровье. Если этот вариант для тебя затруднителен, то можно пользоваться консолью mysql. Нажми кнопку Пуск -> Выполнить Там введи cmd. Появилась консоль. Вводи там путь к файлу mysql.exe (он лежит в папке bin там куда ты её устанавливал). Например:
с ключами -u root -p. Т.е. вводишь:
С:/MySQL/bin/mysql.exe -u root -p
|
Он запросит у тебя пароль рута. Ты его назначал при установке MySQL. Вводишь пароль. Если всё нормально и ты вошёл в консоль, создавай сначала БД. Вводи например
Создатся БД с именем 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 :-) | |
|
|
|
|
|
|
|
для: Максимыч
(29.09.2006 в 16:32)
| | Спасибо за ответ, но...
Убрал из проверочного скрипта кусок кода, который ты посоветовал, на выдаче перестала появляться версия мускула.
Зашел в консоль. набрал CREATE DATABASE test; в ответ выдает ERROR 1007 <HY000>: Can't create database 'test'; database exists.
На этом и остановился. Есть еще мнения? | |
|
|
|
|
|
|
|
для: dimach99
(29.09.2006 в 23:45)
| | >На этом и остановился. Есть еще мнения?
База с именем test уже существует (ее создавать не нужно). Продолжайте дальше по инструкции Максимыч-а. | |
|
|
|