RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 227
от 16.01.2006, 05:03

Администратор:Калашников О.А.
В рассылке:Подписчиков: 215, Экспертов: 39
В номере:Вопросов: 5, Ответов: 21


Вопрос № 32944: Почему php не выделяет базу MySQL в коде вроде всё правильно <? if(!mysql_connect ("localhost","12","12")) { echo "<h1>Ошибка сервера MySQL.</h1>"; exit; } if (mysql_e...
Вопрос № 32963: Доброе время суток эксперты! Киньте ссылочку на информацию о том как использовать БД MySQL. Нужно хранить данные в БД для сайта. Или напишите тут. Желательно в кратце. Не более 10-20 страниц. (Ссылочку а не напишите =)) ...
Вопрос № 32971: Вопрос больше теоретический чем практический: Итак предположим есть файл php такого содержания: <?php //kerner.php ... mysql_connect("server","login","pass"); ... ?> Закрытия соедине...
Вопрос № 32973: Вопрос: Можно ли сохранить картинку в Mysql базу и как потом её вывести? Для сохранения чувствую нужно пользоваться побитным чтением картинки (fread) и записывать в поле типа longBlob. А как выводить? Сохранить перед этим побитной записью...
Вопрос № 32997: Будьте добры, помогите с вопросом: Две системы ХР с MySQL 4.1.8 на каждой, но вот беда, на 1 компе база (ср1251) после РНР скрипта в браузере отображается нормально, а на втором та же самая база после вывода в браузере, русский текст отображается...

Вопрос № 32.944
Почему php не выделяет базу MySQL в коде вроде всё правильно
<?
if(!mysql_connect ("localhost","12","12"))
{
echo "<h1>Ошибка сервера MySQL.</h1>";
exit;
}
if (mysql_errno()==0)
{
if (mysql_select_db("reg",));
else
{
echo "База не выделена ";
}
?>

При работе скрипта пишет что база не выделена. Я думаю что с настройками сервера или баз что то не впорядке.
Отправлен: 10.01.2006, 08:23
Вопрос задал: Адиятуллин Артём Халитович (статус: 1-ый класс)
Всего ответов: 6
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Samum
Здравствуйте, Адиятуллин Артём Халитович!
А то, что у вас написано вообще запускается?
Обычно пишут примерно следующее:
mysql_connect("localhost","12","12") or die("Не могу создать соединение ");
if(@!mysql_select("reg")){
echo "Не могу выбрать базу данных: ".mysql_error();
}
?>
Тогда становятся понятны причины ошибок.
---------
Если бы программистам за их ошибки отрывали части тела, то в конце концов им пришлось бы использовать голову!
Ответ отправил: Samum (статус: Специалист)
Отправлен: 10.01.2006, 09:35
Оценка за ответ: 5
Комментарий оценки:
Попоробывал ваш код
mysql_connect("localhost","14","14") or die("Не могу создать соединение ");
if(@!mysql_select_db("REG")){
echo "Не могу выбрать базу данных: ".mysql_error();
}
if(mysql_query('
CREATE TABLE NAME (
id int primary key
)
'));
?>
Он теперь пишет"Не могу выбрать базу данных: Access denied for user '14'@'localhost' to database 'reg' "Не пойму чего ему надо?.Сам я новичёк в php, начал изучать так что не судите строго.

Отвечает: Дмитрий Иванов
Здравствуйте, Адиятуллин Артём Халитович!

если нижележащий код тоже не будет работать, то тогда причина точно лежит в настройках базы.

$db=mysql_connect ("localhost","12","12") or die (mysql_error());
mysql_select_db("reg",$db) or print ("База не выделена");
---------
ставя оценку - подумай, может ты не все описал.
Ответ отправил: Дмитрий Иванов (статус: Студент)
Отправлен: 10.01.2006, 10:53
Оценка за ответ: 5
Комментарий оценки:
как ни крути не работает.У меня Деневер стоит может настройки поменять надо. Через phpMy Admin всё создайтся.А в скрипте пишет "Не могу выбрать базу данных: Access denied for user '14'@'localhost' to database 'reg' ".Вроде логин пароль првильный указан.

Отвечает: Stamm
Здравствуйте, Адиятуллин Артём Халитович!
Попробуйте следующий код:
$user="12"; // имя
$pas="12"; // пароль
$root="reg"; // База данных
$db=mysql_connect ("localhost",$user,$pas) or die (mysql_error());
mysql_select_db($root,$db) or print ("База не выбрана");
---------
В день - один, ну два подвига, не больше...
Ответ отправил: Stamm (статус: Студент)
Отправлен: 10.01.2006, 10:58
Оценка за ответ: 4
Комментарий оценки:
Не работает см. коментарий выше.

Отвечает: Whisper
Здравствуйте, Адиятуллин Артём Халитович!

Запятую вот убери или вот так напиши mysql_select_db("reg", $link)

---------
все тленно
Ответ отправила: Whisper (статус: 3-ий класс)
Отправлен: 10.01.2006, 11:24
Оценка за ответ: 4
Комментарий оценки:
А про какую запятую ты говорил
Юзер 14 существует.Поставил пользователя root пишет"Не могу выбрать базу данных: Unknown database 'reg' " Хотя в phpMyAdmin база есть собственно ручно создовал.

Отвечает: Sulfur
Здравствуйте, Адиятуллин Артём Халитович!

Скопировал код, который был написан в приложении. Код не отработал в связи с синтаксическими ошибками. Я предлагаю вам использовать следующий вариант:
<?
$db=mysql_connect ("localhost","root","") or die("No connection!");
mysql_select_db("tmc",$db) or die("No database selected!");
?>
А вообще может стоит посмотреть в сторону PEAR::DB?
Ответ отправил: Sulfur (статус: 1-ый класс)
Отправлен: 10.01.2006, 12:05

Отвечает: XMF
Здравствуйте, Адиятуллин Артём Халитович!
--
mysql_select_db("reg",));
в этой строке я не понимаю смысла запятой.. а так пользуйтесь типа:
if(!mysql_connect(...) and !mysql_Select_db(...) { // error}else{
//work...
}
--
Вообще лучше делать все нормально, типа:
mysql_connect(..) or die("ne mogu skonektitsa");
mysql_select_db(..) or die(ne mogu vubrat...");
смысл понятен? ;)
Ответ отправил: XMF (статус: 2-ой класс)
Отправлен: 10.01.2006, 12:41


Вопрос № 32.963
Доброе время суток эксперты!

Киньте ссылочку на информацию о том как использовать БД MySQL.
Нужно хранить данные в БД для сайта.
Или напишите тут.
Желательно в кратце. Не более 10-20 страниц. (Ссылочку а не напишите =))

Заранее спасибо.
Отправлен: 10.01.2006, 14:37
Вопрос задал: Delphin (статус: Студент)
Всего ответов: 6
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: DrakoN
Здравствуйте, Delphin!
Все просто я напишу, как ето сделать...В phpMyAdmin создаете БД для нее, оговариваете имя админа и пароль(либо придумываете сами, либо берете их в файле ридми(который идет вместе с сайтом))...Далее берете скрипт который генерит вашу БД(либо пишите сами, либо он есть в папке MySQL идущей вместе с дистрибутивом сайта).Не ошибайтесь в именах адимна и пароле...И запускаете етот скрипт в phpMyAdmin...Могу намного подобронее но для етого скажите какой именно сайт вы хотите поставить.Удачи!
---------
От Винта!
Ответ отправил: DrakoN (статус: 7-ой класс)
Отправлен: 10.01.2006, 14:54
Оценка за ответ: 3
Комментарий оценки:
Мне самому писать. А не ставить CMS.

Отвечает: Straight
Здравствуйте, Delphin!

http://www.mysql.ru/docs/
Ответ отправил: Straight (статус: 3-ий класс)
Отправлен: 10.01.2006, 15:01
Оценка за ответ: 3

Отвечает: Whisper
Здравствуйте, Delphin!
Упс =)))
http://ru2.php.net/get/php_manual_ru.chm/from/a/mirror вот тут чудо справка и все есть=))) гык
---------
все тленно
Ответ отправила: Whisper (статус: 3-ий класс)
Отправлен: 10.01.2006, 15:02
Оценка за ответ: 3
Комментарий оценки:
Это у меня есть.

Отвечает: Doctor013
Здравствуйте, Delphin!
А яндекс что, перестал работать?
phpclub.ru для начала, точнее вот это http://phpclub.ru/detail/article/phpintro и вот это
http://phpclub.ru/detail/article/2000-12-05 + смотри документацию на http://mysql.ru/
---------
the non-fulfilment one's promise is a cause for someone's mistrust
Ответ отправил: Doctor013 (статус: 4-ый класс)
Отправлен: 10.01.2006, 15:07
Оценка за ответ: 4

Отвечает: Дмитрий Иванов
Здравствуйте, Delphin!

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

документация по Mysql(en):
http://dev.mysql.com/doc/refman/5.0/en/

документация по mysql в PHP(ru):
http://de.php.net/manual/ru/ref.mysql.php

коннеkт к базе данных:
$db = mysql_connect ("localhost", $dbuser, $dbpasswd) or die ("Could not connect");
mysql_select_db($dbname);

создание таблицы:
$sql = 'CREATE TABLE `block_ip` ('
. ' `ip` VARCHAR(60) NOT NULL, '
. ' `cdate` DATETIME NOT NULL,'
. ' PRIMARY KEY (`ip`)'
. ' )';
$query=mysql_query($sql);

получение колличества строк:
$sql="SELECT count(*) AS count FROM ".$tab;
$query=mysql_query($sql);
$row = mysql_fetch_array($query);
$count = $row['count'];
получение определенного колличества записей(один из видов):

$result= array();
$sql="SELECT * FROM ".$tab." ORDER BY id DESC LIMIT $min,$max";
$query=mysql_query($sql);
while($ar=mysql_fetch_array($query)){
$result[]=$ar;
}
return $result;

удаление записи:
$sql = "DELETE FROM $tab WHERE id='$id'";
$query=mysql_query($sql);

изменение записи:

$sql = "UPDATE $tab SET name='$name', email='$email', hurl='$hurl', text='$text', edate=NOW(),edip='$rip' $ins WHERE id='$id'";
$query=mysql_query($sql);

вставка новой записи:
$sql = "INSERT INTO block_ip (ip,cdate) VALUES ('$a',NOW())";
$query=mysql_query($sql);
закрытие коннекта с базой (не обязательный шаг но желательный) :
mysql_close($db);



---------
ставя оценку - подумай, может ты не все описал.
Ответ отправил: Дмитрий Иванов (статус: Студент)
Отправлен: 10.01.2006, 16:47
Оценка за ответ: 5
Комментарий оценки:
Самое то! Спасибо большое!!!
Было бы 10 поставил бы 10.!

Отвечает: Klesman
Здравствуйте, Delphin!

Посмотрите здесь:
http://www.zipsites.ru/books/php_and_mysql/
Удачи.
Ответ отправил: Klesman (статус: 1-ый класс)
Отправлен: 10.01.2006, 17:39
Оценка за ответ: 1
Комментарий оценки:
>Желательно в кратце.
> Не более 10-20 страниц. (Ссылочку а не напишите =))

А вы мне ссылку на книгу даете.


Вопрос № 32.971
Вопрос больше теоретический чем практический:
Итак предположим есть файл php такого содержания:
<?php
//kerner.php
...
mysql_connect("server","login","pass");
...
?>
Закрытия соединения (mysql_close()) в конце не происходит.
Может ли кто-нибудь с другого сайта этим воспользоваться?
Например:
<?php
...
require "www.mysite.ru/kernel.php"
$i=Mysql_query('SELECT * FROM passwords_of_pentagon');
...
?>
Просто интерестно с точки зрения безопасности.

Отправлен: 10.01.2006, 18:09
Вопрос задал: Golden Spider (статус: 4-ый класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Здравствуйте, Golden Spider!
Нет. Соединение закроется автоматически после выполнения скрипта. Даже и не думайте об этом.
---------
Работа - не волк, а произведение силы на расстояние!
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 10.01.2006, 18:15
Оценка за ответ: 5
Комментарий оценки:
Спасибо. Только взламывать чужие сайты мне даром не нужно, не подумайте плохого!:) P.S. Cвой защитить надо

Отвечает: Stamm
Здравствуйте, Golden Spider!
Нет не сможет.........
Это тебе ни хухры мухры, это умная PHP...сама всё закроет.....
---------
В день - один, ну два подвига, не больше...
Ответ отправил: Stamm (статус: Студент)
Отправлен: 10.01.2006, 22:30
Оценка за ответ: 5
Комментарий оценки:
OK

Отвечает: Дмитрий Иванов
Здравствуйте, Golden Spider!

не, воспользоваться с другого сайта этим никто не сможет.
---------
ставя оценку - подумай, может ты не все описал.
Ответ отправил: Дмитрий Иванов (статус: Студент)
Отправлен: 11.01.2006, 10:52
Оценка за ответ: 5
Комментарий оценки:
Good

Отвечает: Lancelot
Здравствуйте, Golden Spider!
Описание функции mysql_close( database_connection):
Функции используется для закрытия непостоянного соединения
---------------------------
Однако в этом нет особой необходимости, поскольку с завершением сценария соединение закроется автоматически.

---------
Дуракам везёт? Не такие уж они и дураки. (Хенрик Ягодзинский)
Ответ отправил: Lancelot (статус: Студент)
Отправлен: 11.01.2006, 22:25
Оценка за ответ: 5
Комментарий оценки:
Ага


Вопрос № 32.973
Вопрос:
Можно ли сохранить картинку в Mysql базу и как потом её вывести?
Для сохранения чувствую нужно пользоваться побитным чтением картинки (fread) и записывать в поле типа longBlob. А как выводить?
Сохранить перед этим побитной записью? :)
Отправлен: 10.01.2006, 18:15
Вопрос задал: Golden Spider (статус: 4-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Doctor013
Здравствуйте, Golden Spider!
На самом деле все проще -

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

<img src="view.php?file=5"> (см. приложение)

теперь о минусах подобного подхода:
1. многократно возрастает трафик базы данных - проблема решается кешированием
2. огромные дампы, которые плохо читаются

Другой подход - хранить в базе ссылки на файлы, а сами файлы пускай остаются на сервере

Приложение:

---------
the non-fulfilment one's promise is a cause for someone's mistrust

Ответ отправил: Doctor013 (статус: 4-ый класс)
Отправлен: 10.01.2006, 21:24

Отвечает: XMF
Здравствуйте, Golden Spider!
--
Загоняешь в БД, а потом вызываешь типа: getimage.php?id=123
и все
Ответ отправил: XMF (статус: 2-ой класс)
Отправлен: 10.01.2006, 23:32
Оценка за ответ: 3
Комментарий оценки:
Очень точный ответ.
Как вызывать изображение библиотекой CG я знаю, а вот как "загнать" её в базу?

Отвечает: Дмитрий Иванов
Здравствуйте, Golden Spider!

сохранение в приложении. тип ячеек TEXT, INT, BLOB

после select надо сделать обратное преобразование stripslashes()
и работать как с бинарной информацией.

Но линк на файл - действительно лучше :)

Приложение:

---------
ставя оценку - подумай, может ты не все описал.

Ответ отправил: Дмитрий Иванов (статус: Студент)
Отправлен: 11.01.2006, 10:50
Оценка за ответ: 5
Комментарий оценки:
Вот это я понимаю!
Ничего лишнего!
А насчет линка, я сейчас пользуюсь этим способом просто захотелось узнать что-то альтернативное...


Вопрос № 32.997
Будьте добры, помогите с вопросом:
Две системы ХР с MySQL 4.1.8 на каждой, но вот беда, на 1 компе база (ср1251) после РНР скрипта в браузере отображается нормально, а на втором та же самая база после вывода в браузере, русский текст отображается вопросами (???? ? ???) ?
(браузеры разные FireFox и ослик :)
Отправлен: 10.01.2006, 22:38
Вопрос задал: Alex-a888 (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Stamm
Здравствуйте, Alex-a888!
Вставьте этот код:
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
---------
В день - один, ну два подвига, не больше...
Ответ отправил: Stamm (статус: Студент)
Отправлен: 10.01.2006, 22:49
Оценка за ответ: 5
Комментарий оценки:
Супер, кратко и ясно!

Отвечает: Дмитрий Иванов
Здравствуйте, Alex-a888!

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

что то большее сложно сказать , не хватает информации
---------
ставя оценку - подумай, может ты не все описал.
Ответ отправил: Дмитрий Иванов (статус: Студент)
Отправлен: 11.01.2006, 10:29
Оценка за ответ: 2
Комментарий оценки:
Базу копирую, но и во вновь созданной базе тоже '?'.
Помогло: mysql_query ("set character_set_....


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

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


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Яндекс Rambler's Top100

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.phpplus
Архив рассылки
Отписаться Вебом Почтой
Вспомнить пароль

В избранное