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

Форум MySQL

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

 

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

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

тема: Не выполняются скрипты, использующие запросы
 
 автор: VINNI   (23.11.2006 в 10:53)   письмо автору
 
 

Такая проблема. Опять же следую инструкциям в книге РНР5 Самоучитель. Создал файл config.php (листинг 15.47) и index.php (листинг 15.49). В браузере ожидаймый результат не появляецца (слово Maks). Т.е. не выполняецца скрипт, взаимодействующий с БД из MySQL. Остальные скрипты, не использующие запросы и поключение к MySQL, работают нормально. Заранее спасибо.

   
 
 автор: cheops   (23.11.2006 в 11:54)   письмо автору
 
   для: VINNI   (23.11.2006 в 10:53)
 

Просто чистый экран вместо страницы? У вас PHP подключён к Apache как модуль или как CGI?

   
 
 автор: VINNI   (23.11.2006 в 15:11)   письмо автору
 
   для: cheops   (23.11.2006 в 11:54)
 

да. просто чистый экран. РНР установлен в качестве модуля.

   
 
 автор: cheops   (23.11.2006 в 23:26)   письмо автору
 
   для: VINNI   (23.11.2006 в 15:11)
 

А база данных из config.php и таблица authors существуют? Вы их разворачивали в базе данных?

PS Если бы не подцепилась бы библиотека для расширения php_mysql.dll, то пустой экран характерен для CGI, в случае модуля - PHP бы вывел предупреждение в окно браузера...

   
 
 автор: VINNI   (05.12.2006 в 10:35)   письмо автору
 
   для: cheops   (23.11.2006 в 23:26)
 

да. только что создал базу данных softtime. В ней одна таблица - authors. Я все перепроверл в MySql - т.е. база данных есть, таблица есть, запросы с таблицей выполняются нормально. ТОТ ЖЕ запрос пишу в РНР-файле. Чистое окно браузера (хотя должно появиться слово Maks, как в примере из самоучителя). Вот листинг файлов РНР: (index.php и config.php)

<?php
// Устанавливаем соединение с базой данных
include "config.php";
// Выполняем SQL-запрос
$ath = mysql_query("SELECT name FROM authors where id_author=1");
// Обрабатываем результаты запроса
if($ath) echo mysql_result($ath,0,'name');
else exit(mysql_error());
?>

<?php
$dblocation = "localhost";
$dbname = "softtime";
$dbuser = "root";
$dbpasswd = "";
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!$dbcnx)
{
exit ("<P>В настоящий момент сервер базы данных не доступен, поэтому
корректное отображение страницы невозможно.</P>" );
}
if (!@mysql_select_db($dbname, $dbcnx))
{
exit( "<P>В настоящий момент база данных не доступна, поэтому
корректное отображение страницы невозможно.</P>" );
}
?>

Я чот ваще в растеряности... :-(

   
 
 автор: Serrrgio   (05.12.2006 в 11:20)
 
   для: VINNI   (05.12.2006 в 10:35)
 

если в phpmyadmin выполнить запрос SELECT name FROM authors where id_author=1 результат есть?

и еще попробуйте вот так
if($ath) echo mysql_result($ath,0);

   
 
 автор: VINNI   (05.12.2006 в 11:34)   письмо автору
 
   для: Serrrgio   (05.12.2006 в 11:20)
 

А что такое phpmyadmin?
if($ath) echo mysql_result($ath,0); пробовал - также не работает.

   
 
 автор: Serrrgio   (05.12.2006 в 11:55)
 
   для: VINNI   (05.12.2006 в 11:34)
 

phpmyadmin это web интерфейс к mysql, попробуйте в браузере наберите http://localhost/phpmyadmin может он у вас установвлен, но вы об этом не знаетет

а вобще скрипт а первый взгляд рабочий, и еще желательно проверять количество возвращенных из мускула данных
if (mysql_num_rows($ath)>0) {
траляля
} else {
print "По вашеиму запросу ничего не найдено!";
}

нужно убедится приходит что либо от мускула...

   
 
 автор: VINNI   (05.12.2006 в 12:59)   письмо автору
 
   для: Serrrgio   (05.12.2006 в 11:55)
 

При использовании http://localhost/phpmyadmin - Невозможно отобразить страницу.
При использовании if (mysql_num_rows($ath)>0) {
траляля
} else {
print "По вашеиму запросу ничего не найдено!";
}

также ничего не происходит. Ни "траляля", ни ""По вашеиму запросу ничего не найдено!"

   
 
 автор: Serrrgio   (05.12.2006 в 13:37)
 
   для: VINNI   (05.12.2006 в 12:59)
 

странно, такое впечатление, что:
до этого места выполнение скрипта вобще не доходит, что-то должно было вывести в любом случае...
скрипт перекращает свою работу не выдавая вообще никаких сообщений, и похоже в самом начале. что-то подавляет вывод сосбщений об ошибке это либо @ либо настройки в php.ini
немного передаелаем ваш код:
index.php

<?php
// Устанавливаем соединение с базой данных
$dblocation "localhost";
$dbname "softtime";
$dbuser "root";
$dbpasswd "";
$dbcnx mysql_connect($dblocation,$dbuser,$dbpasswd) or die (mysql_error());
mysql_select_db($dbname$dbcnx) or die (mysql_error());

// Выполняем SQL-запрос
$sql="SELECT name FROM authors where id_author=1";
$ath mysql_query($sql) or die(mysql_error());
// Обрабатываем результаты запроса
if($ath) {
$num_rows=mysql_num_rows($ath);
print 
"$num_rows<br>"// debug
if ($num_rows>0) {
print 
mysql_result($ath,0);
} else {
print 
"Ничего не найдено!";
}
}
?>


так выводит что-нить?

   
 
 автор: VINNI   (05.12.2006 в 13:41)   письмо автору
 
   для: Serrrgio   (05.12.2006 в 13:37)
 

нет.... так тоже ничего... :-(((

   
 
 автор: Serrrgio   (05.12.2006 в 13:50)
 
   для: VINNI   (05.12.2006 в 13:41)
 

мы всеравно его поборим :)), даже интересно стало
для начала, не заметил сразу, вначале не <?php а просто <?
начало должно выглядеть так:

Debug1<br>
<?
print "Debug2<br>";
...

если и так ничего не выведет в браузер, то у вас вобще ничего не работает, советую сразу переустановить apache, php, mysql чудес не бывает

и еще, покажите из php.ini строчки error_reporting и display_errors

   
 
 автор: VINNI   (05.12.2006 в 14:10)   письмо автору
 
   для: Serrrgio   (05.12.2006 в 13:50)
 

При использовании <? вместо <?php в браузере появляецца:
0) { print mysql_result($ath,0); } else { print "Ничего не найдено!"; } } ?>

в php.ini несколько строк с error_reporting (все они закомментированы). уточните плиз какую посмотреть.
display_errors = Off

   
 
 автор: Serrrgio   (05.12.2006 в 14:28)
 
   для: VINNI   (05.12.2006 в 14:10)
 

о мама дарагая....

в php.ini
нужно вписать строки
display_errors = On
error_reporting = E_ALL & ~E_NOTICE

и потом перезапустить апач

что теперь пишется в браузере?

   
 
 автор: VINNI   (05.12.2006 в 14:40)   письмо автору
 
   для: Serrrgio   (05.12.2006 в 14:28)
 

0) { print mysql_result($ath,0); } else { print "Ничего не найдено!"; } } ?>

   
 
 автор: Serrrgio   (05.12.2006 в 14:47)
 
   для: VINNI   (05.12.2006 в 14:40)
 

надабы переустановить пхп, какая версия пхп, апач? какая ось ка кампе?

в php.ini раскоментировать строку
short_open_tag = On или сделать On если он Off (перезапустить апач)

и исходный текст страницы из браузера сюда киньте pls

   
 
 автор: VINNI   (05.12.2006 в 15:22)   письмо автору
 
   для: Serrrgio   (05.12.2006 в 14:47)
 

Код:
<?
// Устанавливаем соединение с базой данных
$dblocation = "localhost";

$dbname = "softtime";
$dbuser = "root";
$dbpasswd = "";
$dbcnx = mysql_connect($dblocation,$dbuser,$dbpasswd) or die (mysql_error());
mysql_select_db($dbname, $dbcnx) or die (mysql_error());

// Выполняем SQL-запрос
$sql="SELECT name FROM authors where id_author=1";
$ath = mysql_query($sql) or die(mysql_error());
// Обрабатываем результаты запроса
if($ath) {
$num_rows=mysql_num_rows($ath);
print "$num_rows<br>"; // debug
if ($num_rows>0) {
print mysql_result($ath,0);
} else {
print "Ничего не найдено!";
}
}
?>

После short_open_tag = On в браузере сообщение:
Fatal error: Call to undefined function mysql_connect() in C:\Apache2.2\htdocs\index2.php on line 8

Апач - 2.2.3, пхп - 5.2.0, мускл - 5.0.27.

Все это только што поставил на свежую винду (ХП Профессионал). На старой было тоже самое (пробовал переустанавливать несколько раз).

Настройку Апача+пхп производил в соответствии с:
http://www.softtime.ru/article/index.php?id_article=95

И еще такая мысль. Я все это пытаюсь запустить на работе, где есть сеть и все компы включены в домен. При установке апач определил его. Вместо него я написал localhost. Может быть чонть изза этого... Хотя я не думаю. Потому што сам сервер апач работает, пхп-код БЕЗ ЗАПРОСОВ мускла выполняется нормально...

   
 
 автор: Serrrgio   (05.12.2006 в 15:52)
 
   для: VINNI   (05.12.2006 в 15:22)
 

ну теперь все прояснилось, домен тут нипричем, следут медитировать вот над этим:
Fatal error: Call to undefined function mysql_connect()
это значит что пхп не знает такой функции, т.е. с базами он не работает... это все настраивается в пхп.ини в секции [MySQL]

создайте файл:
<?
phpinfo();
?>

и посмотрите что там сказано про базы...

   
 
 автор: VINNI   (05.12.2006 в 15:58)   письмо автору
 
   для: Serrrgio   (05.12.2006 в 15:52)
 

сделал. ток где и что смотреть я не знаю... поточнее можно?
и еще вопрос. в чом отличие <? phpinfo(); ?> от <?php phpinfo(); ?>

   
 
 автор: VINNI   (05.12.2006 в 16:02)   письмо автору
 
   для: Serrrgio   (05.12.2006 в 15:52)
 

а сорри... :-) Вот:
[MySQL]
; Allow or prevent persistent links.
mysql.allow_persistent = On

; Maximum number of persistent links. -1 means no limit.
mysql.max_persistent = -1

; Maximum number of links (persistent + non-persistent). -1 means no limit.
mysql.max_links = -1

; Default port number for mysql_connect(). If unset, mysql_connect() will use
; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the
; compile-time value defined MYSQL_PORT (in that order). Win32 will only look
; at MYSQL_PORT.
mysql.default_port =

; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
mysql.default_socket =

; Default host for mysql_connect() (doesn't apply in safe mode).
mysql.default_host =

; Default user for mysql_connect() (doesn't apply in safe mode).
mysql.default_user =

; Default password for mysql_connect() (doesn't apply in safe mode).
; Note that this is generally a *bad* idea to store passwords in this file.
; *Any* user with PHP access can run 'echo get_cfg_var("mysql.default_password")
; and reveal this password! And of course, any users with read access to this
; file will be able to reveal the password as well.
mysql.default_password =

; Maximum time (in seconds) for connect timeout. -1 means no limit
mysql.connect_timeout = 60

; Trace mode. When trace_mode is active (=On), warnings for table/index scans and
; SQL-Errors will be displayed.
mysql.trace_mode = Off

   
 
 автор: Serrrgio   (05.12.2006 в 16:26)
 
   для: VINNI   (05.12.2006 в 16:02)
 

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

в выхлопе phpinfo() нужно искать секцию mysql

   
 
 автор: VINNI   (05.12.2006 в 16:31)   письмо автору
 
   для: Serrrgio   (05.12.2006 в 16:26)
 

в выхлопе - это в результате выполнения? :-))) если да, то там нет секции mysql. А код ини-файла я привел...

   
 
 автор: Serrrgio   (05.12.2006 в 16:41)
 
   для: VINNI   (05.12.2006 в 16:31)
 

Поздавляю, ваш пхп не поддерживает mysql, вы наверно взяли
"Кроме полного zip-архива на сайте также доступна для загрузки облегченная версия PHP в виде инсталлятора. Ее размер значительно меньше – около 2,5 Мб из-за того, что в ней отсутствует множество библиотек-расширений"
так?
давайте асю.

   
 
 автор: VINNI   (05.12.2006 в 16:46)   письмо автору
 
   для: Serrrgio   (05.12.2006 в 16:41)
 

да нет, я взял версию с расширениями. вес в архиве - 9,2 метра :-)
аська - 331437211

   
Rambler's Top100
вверх

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