[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ошибка в Лоле
Astin
Приветствую всех Форумчане!

Есть файл подключения к БД, в этом файле есть функция, с помощью
которой я эскепю данные перед занесением в БД

Когда юзер добавляет заявку проблем нет, но...

Когда юзер переходит в список заявок или на просмотр одной заявки
вылетает ошибка в лог и самое интересное что она не всегда вылетает

Вот какая ошибка в логе появляется
[error] [client 130.193.50.13] PHP Fatal error:  Cannot redeclare escapStr() (previously declared in /home/c/cl12605/rinat/public_html/connects/mysql.php:18) in /home/c/cl12605/rinat/public_html/connects/mysql.php on line 23


Указывается именно на строчки этой функции

Вот функция
<?php

function
escapStr($data)
{

if(is_array($data))
$data = array_map("escapStr", $data);
else
$data = mysql_real_escape_string($data);

return $data;
}


Взял и поменял на вот так
<?php

function
escapStr($data)
{

$data = mysql_real_escape_string($data);

return $data;
}


И один хрен пернеодически вылетает ошибка в лог и что самое интересное
не всегда. То есть когда сам проверял и переходил по страницам заявок
вылетала ошибка в лог, но опять же не всегда.

Почему так не пойму, может кто объяснит

Когда убираю функцию все нормально
_



Astin
И вот опять смотри лог ошибок и опять аж две штуки.

Посмотрел обычный лог и заметил закономерность, что часто вылетает ошибка в лог
если на сайт заходит YandexBot

Вот что в обычные логи пришло
"GET /order/43 HTTP/1.0" 500 - "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"

"GET /order/45 HTTP/1.0" 500 - "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"


Почему в основном на YandexBot вылетает, но бывает и когда юзер заходит,
а порой вообще нифига нет в логах ошибок.

Что за чудеса не пойму
_
Игорь_Vasinsky
ты хоть понимаешь что это?

Цитата
Cannot redeclare escapStr()


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Astin
Игорь_Vasinsky

Я так понимаю что эта ошибка бывает при одинаковых именах функций в одном классе
или при повторном подключении.

Файл mysql.php я подключаю только в том месте где к примеру вывожу заявки,
параллельно больше он нигде не может быть подключен.

До этого эта функция была в самом начале, взял и поставил ее после подключения к БД

Получилось вот так
<?php

// Генерация страницы ошибки при доступе вне системы
if(!defined('KEY'))
{
header("HTTP/1.1 404 Not Found");
exit(file_get_contents(HOST."meseng/notfound.html"));
}
////////////////////////////////////////////////////////////////
// Функция для запроса к БД MySQL
function mysqlQuery($sql, $print = false)
{
$result = mysql_query($sql, CONNECT);

if($result === false || $print)
{
$error = mysql_error();
$trace = debug_backtrace();
$head = $error ?'<b style="color:red">MySQL error: </b><br>
<b style="color:green">'
. $error .'</b><br><br>':NULL;
}
else
return
$result;
}
////////////////////////////////////////////////////////////////
/////// Подключение и установка кодировок соединения ///////
////////////////////////////////////////////////////////////////

$link = mysql_connect( DBSERVER, DBUSER, DBPASSWORD ) or die(NO_CONNECT);

define('CONNECT', $link);

mysql_select_db( DATABASE, CONNECT )or die(NO_DB_SELECT);

mysqlQuery('SET NAMES utf8');
mysqlQuery('SET CHARACTER SET utf8');
mysqlQuery('SET COLLATION_CONNECTION="utf8_general_ci"');

////////////////////////////////////////////////////////////////
//Функция обработки литеральных констант для SQL

function escapStr($data)
{
if(is_array($data))
$data = array_map("escapStr", $data);
else
$data = mysql_real_escape_string($data);

return $data;
}


Теперь же один раз получилась ошибка и уже ругается на строки
где Функция для запроса к БД MySQL, а именно
PHP Fatal error:  Cannot redeclare mysqlQuery()

и показывает на строку с открывающей скобкой у этой функции и на строку
с закрывающей скобкой.

Вроде больше ошибок сейчас не вылетало.

Но как это победить и почему такая фигня

_




Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.