Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: помгите разобратся с ошибкой на php

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: я создаю свой cms блог и на главной странице пишет сообщение об ошибке в самом верху Deprecated: mysql_escape_string(): This function is deprecated; use mysql_r
higub
Отправлено: 21 Ноября, 2015 - 08:49:14
Post Id



Новичок


Покинул форум
Сообщений всего: 56
Дата рег-ции: Нояб. 2015  


Помог: 0 раз(а)

[+]


из-за того что я чучуть понел в чём проблема я понел где ошибка и в скрипте в котором какя-то ошибка находится тут А?! :
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. /**
  5.  * Класс для обработки статей
  6.  */
  7.  
  8. class Article
  9. {
  10.   // Свойства
  11.  
  12.   /**
  13.   * @var int ID статей из базы данных
  14.   */
  15.   public $id = null;
  16.  
  17.   /**
  18.   * @var int Дата первой публикации статьи
  19.   */
  20.   public $publicationDate = null;
  21.  
  22.   /**
  23.   * @var string Полное название статьи
  24.   */
  25.   public $title = null;
  26.  
  27.   /**
  28.   * @var string Краткое описание статьи
  29.   */
  30.   public $summary = null;
  31.  
  32.   /**
  33.   * @var string HTML содержание статьи
  34.   */
  35.   public $content = null;
  36.  
  37.  
  38.   /**
  39.   * Устанавливаем свойства с помощью значений в заданном массиве
  40.   *
  41.   * @param assoc Значения свойств
  42.   */
  43.  
  44.   public function __construct( $data=array() ) {
  45.     if ( isset( $data['id'] ) ) $this->id = (int) $data['id'];
  46.     if ( isset( $data['publicationDate'] ) ) $this->publicationDate = (int) $data['publicationDate'];
  47.     if ( isset( $data['title'] ) ) $this->title = preg_replace ( "/[^\.\,\-\_\'\"\@\?\!\:\$ a-zA-Z0-9()]/", "", $data['title'] );
  48.     if ( isset( $data['summary'] ) ) $this->summary = preg_replace ( "/[^\.\,\-\_\'\"\@\?\!\:\$ a-zA-Z0-9()]/", "", $data['summary'] );
  49.     if ( isset( $data['content'] ) ) $this->content = $data['content'];
  50.   }
  51.  
  52.  
  53.   /**
  54.   * Устанавливаем свойств с помощью значений формы редактирования записи в заданном массиве
  55.   *
  56.   * @param assoc Значения записи формы
  57.   */
  58.  
  59.   public function storeFormValues ( $params ) {
  60.  
  61.     // Сохраняем все параметры
  62.     $this->__construct( $params );
  63.  
  64.     // Разбираем и сохраняем дату публикации
  65.     if ( isset($params['publicationDate']) ) {
  66.       $publicationDate = explode ( '-', $params['publicationDate'] );
  67.  
  68.       if ( count($publicationDate) == 3 ) {
  69.         list ( $y, $m, $d ) = $publicationDate;
  70.         $this->publicationDate = mktime ( 0, 0, 0, $m, $d, $y );
  71.       }
  72.     }
  73.   }
  74.  
  75.  
  76.   /**
  77.   * Возвращаем объект статьи соответствующий заданному ID статьи
  78.   *
  79.   * @param int ID статьи
  80.   * @return Article|false Объект статьи или false, если запись не найдена или возникли проблемы
  81.   */
  82.  
  83.   public static function getById( $id ) {
  84.     $conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
  85.     $sql = "SELECT *, UNIX_TIMESTAMP(publicationDate) AS publicationDate FROM articles WHERE id = :id";
  86.     $st = $conn->prepare( $sql );
  87.     $st->bindValue( ":id", $id, PDO::PARAM_INT );
  88.     $st->execute();
  89.     $row = $st->fetch();
  90.     $conn = null;
  91.     if ( $row ) return new Article( $row );
  92.   }
  93.  
  94.  
  95.   /**
  96.   * Возвращает все (или диапазон) объектов статей в базе данных
  97.   *
  98.   * @param int Optional Количество строк (по умолчанию все)
  99.   * @param string Optional Столбец по которому производится сортировка  статей (по умолчанию "publicationDate DESC")
  100.   * @return Array|false Двух элементный массив: results => массив, список объектов статей; totalRows => общее количество статей
  101.   */
  102.  
  103.   public static function getList( $numRows=1000000, $order="publicationDate DESC" ) {
  104.     $conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
  105.     $sql = "SELECT SQL_CALC_FOUND_ROWS *, UNIX_TIMESTAMP(publicationDate) AS publicationDate FROM articles
  106.            ORDER BY " . mysql_escape_string($order) . " LIMIT :numRows";
  107.  
  108.     $st = $conn->prepare( $sql );
  109.     $st->bindValue( ":numRows", $numRows, PDO::PARAM_INT );
  110.     $st->execute();
  111.     $list = array();
  112.  
  113.     while ( $row = $st->fetch() ) {
  114.       $article = new Article( $row );
  115.       $list[] = $article;
  116.     }
  117.  
  118.     // Получаем общее количество статей, которые соответствуют критерию
  119.     $sql = "SELECT FOUND_ROWS() AS totalRows";
  120.     $totalRows = $conn->query( $sql )->fetch();
  121.     $conn = null;
  122.     return ( array ( "results" => $list, "totalRows" => $totalRows[0] ) );
  123.   }
  124.  
  125.  
  126.   /**
  127.   * Вставляем текущий объект статьи в базу данных, устанавливаем его свойства.
  128.   */
  129.  
  130.   public function insert() {
  131.  
  132.     // Есть у объекта статьи ID?
  133.     if ( !is_null( $this->id ) ) trigger_error ( "Article::insert(): Attempt to insert an Article object that already has its ID property set (to $this->id).", E_USER_ERROR );
  134.  
  135.     // Вставляем статью
  136.     $conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
  137.     $sql = "INSERT INTO articles ( publicationDate, title, summary, content ) VALUES ( FROM_UNIXTIME(:publicationDate), :title, :summary, :content )";
  138.     $st = $conn->prepare ( $sql );
  139.     $st->bindValue( ":publicationDate", $this->publicationDate, PDO::PARAM_INT );
  140.     $st->bindValue( ":title", $this->title, PDO::PARAM_STR );
  141.     $st->bindValue( ":summary", $this->summary, PDO::PARAM_STR );
  142.     $st->bindValue( ":content", $this->content, PDO::PARAM_STR );
  143.     $st->execute();
  144.     $this->id = $conn->lastInsertId();
  145.     $conn = null;
  146.   }
  147.  
  148.  
  149.   /**
  150.   * Обновляем текущий объект статьи в базе данных
  151.   */
  152.  
  153.   public function update() {
  154.  
  155.     // Есть ли у объекта статьи ID?
  156.     if ( is_null( $this->id ) ) trigger_error ( "Article::update(): Attempt to update an Article object that does not have its ID property set.", E_USER_ERROR );
  157.    
  158.     // Обновляем статью
  159.     $conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
  160.     $sql = "UPDATE articles SET publicationDate=FROM_UNIXTIME(:publicationDate), title=:title, summary=:summary, content=:content WHERE id = :id";
  161.     $st = $conn->prepare ( $sql );
  162.     $st->bindValue( ":publicationDate", $this->publicationDate, PDO::PARAM_INT );
  163.     $st->bindValue( ":title", $this->title, PDO::PARAM_STR );
  164.     $st->bindValue( ":summary", $this->summary, PDO::PARAM_STR );
  165.     $st->bindValue( ":content", $this->content, PDO::PARAM_STR );
  166.     $st->bindValue( ":id", $this->id, PDO::PARAM_INT );
  167.     $st->execute();
  168.     $conn = null;
  169.   }
  170.  
  171.  
  172.   /**
  173.   * Удаляем текущий объект статьи из базы данных
  174.   */
  175.  
  176.   public function delete() {
  177.  
  178.     // Есть ли у объекта статьи ID?
  179.     if ( is_null( $this->id ) ) trigger_error ( "Article::delete(): Attempt to delete an Article object that does not have its ID property set.", E_USER_ERROR );
  180.  
  181.     // Удаляем статью
  182.     $conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
  183.     $st = $conn->prepare ( "DELETE FROM articles WHERE id = :id LIMIT 1" );
  184.     $st->bindValue( ":id", $this->id, PDO::PARAM_INT );
  185.     $st->execute();
  186.     $conn = null;
  187.   }
  188.  
  189. }
  190.  
  191. ?>
  192.  
  193.  
 
 Top
Tyoma5891
Отправлено: 21 Ноября, 2015 - 12:25:38
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




higub пишет:
из-за того что я чучуть понел в чём проблема я понел где ошибка и в скрипте в котором какя-то ошибка находится тут А?! :

эту фразу нужно перевести на нормальный русский язык...
 
 Top
DelphinPRO
Отправлено: 21 Ноября, 2015 - 12:40:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




higub, Научись четко формулировать свои мысли, если хочешь, чтобы другие тебя понимали.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
esterio
Отправлено: 22 Ноября, 2015 - 22:03:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




mysql_* функции устарели. используйте mysqli или PDO
 
 Top
andrewkard
Отправлено: 23 Ноября, 2015 - 11:43:00
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




Замените в коде:
higub пишет:
ORDER BY " . mysql_escape_string($order) . " LIMIT :numRows";

на

PHP:
скопировать код в буфер обмена
  1.  
  2. ORDER BY " . $conn->quote($order) . " LIMIT :numRows";
  3.  

и, аналогично в других местах, если есть
 
 Top
DeepVarvar Супермодератор
Отправлено: 23 Ноября, 2015 - 13:04:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




andrewkard пишет:
LIMIT :numRows
И чо, правда работает?
 
 Top
andrewkard
Отправлено: 23 Ноября, 2015 - 14:20:36
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




DeepVarvar пишет:
И чо, правда работает?

Нет. Но вопрос то не про это был.
 
 Top
esterio
Отправлено: 23 Ноября, 2015 - 17:14:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




andrewkard
И опять плохой совет.
ТС использует mysql_* драйвер, на что и материться ПХП. Вы же написали строчку используя PDO. Теперь ТС делает Copy&Paste и кричит что не работает. А потому что Вы не написали за него соединене с базой. Теперь он меняет код соединения с mysql_connect на new PDO и все mysql_* функции начинают ругаться что нету соединения. ПОжалуйста не надо давать плохих советов. И так полно Поповых.
 
 Top
andrewkard
Отправлено: 23 Ноября, 2015 - 18:54:41
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




esterio
Ну а почему Вы решили что:
esterio пишет:
ТС использует mysql_* драйвер, на что и материться ПХП
?
higub пишет:
public static function getList( $numRows=1000000, $order="publicationDate DESC" ) {
    $conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
    $sql = "SELECT SQL_CALC_FOUND_ROWS *, UNIX_TIMESTAMP(publicationDate) AS publicationDate FROM articles
           ORDER BY " . mysql_escape_string($order) . " LIMIT :numRows";


ругается он только на функцию. А этот код я выделил, что было понятнее в контексте. Да, не обратил внимание на limit, но вопрос был не об этом.
(Добавление)
103 строчка кода первого сообщения ТС
 
 Top
Sail
Отправлено: 24 Ноября, 2015 - 08:25:26
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




andrewkard, эта функция ведь не в вакууме существует, а является частью устаревшего и исключаемого расширения. И раз уж присутствует в коде, то и "Оригинальное API MySQL" используется. Что и приводит к "замечанию".

(Отредактировано автором: 24 Ноября, 2015 - 08:31:08)

 
 Top
andrewkard
Отправлено: 24 Ноября, 2015 - 12:20:07
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




Sail пишет:
andrewkard, эта функция ведь не в вакууме существует, а является частью устаревшего и исключаемого расширения. И раз уж присутствует в коде, то и "Оригинальное API MySQL" используется. Что и приводит к "замечанию".[off][/off]

А мой совет как раз об этом, что если используешь PDO, то и ставь quote(), а не устаревшую mysql_escape_string().
И "замечания" не уместны, не разобравшись в теме.
 
 Top
higub
Отправлено: 03 Декабря, 2015 - 13:40:43
Post Id



Новичок


Покинул форум
Сообщений всего: 56
Дата рег-ции: Нояб. 2015  


Помог: 0 раз(а)

[+]


andrewkard пишет:
мне кажется ты тут один одекват!

(Отредактировано автором: 03 Декабря, 2015 - 13:41:05)

 
 Top
Sail
Отправлено: 03 Декабря, 2015 - 14:56:57
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




higub, эт Вы зря Улыбка
andrewkard верно указал не неуместность использования функции mysql_escape_string() и предложил альтернативу из библиотеки, которую Вы используете при создании коннекта в приведённом Вами коде Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB