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
Форумы портала PHP.SU :: Версия для печати :: CMS
Форумы портала PHP.SU » » Объектно-ориентированное программирование » CMS

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

1. wawelon - 17 Августа, 2014 - 22:55:49 - перейти к сообщению
Здравствуйте, нашел CMS но она на mysql
Хочу перенести на mysqli вот часть кода


CODE (htmlphp):
скопировать код в буфер обмена
  1. protected $db;
  2.                 //Соединение с базой данных.
  3.                 public function __construct() {
  4.                         $this->db = mysql_connect(HOST,USER,PASSWORD);
  5.                         if(!$this->db) {
  6.                                 exit("Ошибка соединения с базой данных ".mysql_error());
  7.                         }
  8.                         if(!mysql_select_db(DB,$this->db)) {
  9.                                 exit("Нет такой базы данных".mysql_error());
  10.                         }
  11.                         mysql_query("SET NAMES 'UTF-8'");
  12.                 }
  13.                
  14.                 //Вывод всех меню.
  15.                 public function menu_array() {
  16.                         $query = "SELECT * FROM `menu`";
  17.                         $result = mysql_query($query);
  18.                         if(!$result) {
  19.                                 exit("Такой категории не существует".mysql_error());
  20.                         }
  21.                         $row = array();
  22.                         for($i = 0; $i < mysql_num_rows($result); $i++) {
  23.                                 $row[] = mysql_fetch_array($result, MYSQL_ASSOC);
  24.                         }
  25.                                 return $row;
  26.                 }
  27.                 //Вывод страницы меню с информацией.
  28.                 public function get_menu($id) {
  29.                         $query = "SELECT * FROM `menu` WHERE `id_menu`='$id'";
  30.                        
  31.                         $result = mysql_query($query);
  32.                         if(!$result) {
  33.                                 exit(mysql_error());
  34.                         }      
  35.                         $row = mysql_fetch_array($result, MYSQL_ASSOC);
  36.                                 return $row;
  37.                 }


как мне ее переделать?
2. DelphinPRO - 17 Августа, 2014 - 23:08:46 - перейти к сообщению
mysql_* заменить на mysqli_*

Голливудская улыбка
3. OrmaJever - 17 Августа, 2014 - 23:15:02 - перейти к сообщению
DelphinPRO, ага, только функцияональщина mysqli обязательно требует дескриптор соединения.
4. wawelon - 18 Августа, 2014 - 21:52:57 - перейти к сообщению
[quote=DelphinPRO][/quote]
сразу ошибок куча в mysql_select_db почему-то выдает ошибку нету такой базы данных но база правельно прописана и в mysql работает
потом mysqli_query так же ошибка и тд я хотел бы если возможно что бы вы перевели по вашему примеру и скинули код сюда а я попробовал и если все б работало зделал выводы для себя
(Добавление)
[quote=OrmaJever][/quote]
Дискриптор? извините я только изучаю php это типа global $mysqli; что-то такое?.
5. OrmaJever - 18 Августа, 2014 - 22:16:52 - перейти к сообщению
если в mysql у вас было

то в mysqli будет

и так большинство функций
6. wawelon - 23 Августа, 2014 - 21:10:18 - перейти к сообщению
[quote=OrmaJever][/quote]

Здравствуйте взял так

PHP:
скопировать код в буфер обмена
  1. public function __construct() {
  2.                         @$mysqli = new mysqli( HOST, USER, PASSWORD, DB );
  3.                         @$mysqli->set_charset( 'utf8');
  4.                         if ($mysqli->connect_error) {
  5.                                 die('
  6.                                 <div style="color:red; border:1px solid red; text-align:center; font-size:20px; width:100%; height:100%;">
  7.                                 <p>Ошибка соединения: '.date("H:i:s").'</p>
  8.                                 <p>Обратитесь к Администрации сайта для устранения ошибки</p>
  9.                                 </div>
  10.                                 ');
  11.                         }
  12.                         if ( !$mysqli->set_charset( 'utf8' )) {
  13.                                 echo'<div style="color:red; border:1px solid red; text-align:center; font-size:20px; width:100%; height:100%;">
  14.                                 Ошибка при загрузке набора символов utf8';
  15.                         }
  16.                 }      
  17.                
  18.                 //Вывод всех меню.
  19.                 public function menu_array() {
  20.                         $query = "SELECT * FROM `menu`";
  21.                         $result = $mysqli->query($query);
  22.                         if(!$result) {
  23.                                 exit("Такой категории не существует".mysqli_connect_error());
  24.                         }
  25.                         $row = array();
  26.                         for($i = 0; $i < mysqli_num_rows($result); $i++) {
  27.                                 $row[] = mysqli_fetch_array($result, MYSQLI_ASSOC);
  28.                         }
  29.                                 return $row;
  30.                 }


но выдает ошибку Call to a member function query() on a non-object

почему все ж вроде правельно
7. avtor.fox - 23 Августа, 2014 - 21:23:47 - перейти к сообщению
wawelon пишет:
но выдает ошибку Call to a member function query() on a non-object

ыыыыыыыыыыыыыыыыыыыыыыыыыыыыыы

откуда пых узнает, что $mysqli на самом деле является объектом?



и убери нахрен эти собачки
8. wawelon - 23 Августа, 2014 - 21:46:39 - перейти к сообщению
[quote=avtor.fox][/quote]
куда ваше $this->mysqli = ....; вписывать непойму нечего.
9. caballero - 24 Августа, 2014 - 00:04:15 - перейти к сообщению
а чем великий смысл переносить на mysqli ?
особенно если учесть некомпетентность переносчика
10. wawelon - 24 Августа, 2014 - 01:31:50 - перейти к сообщению
[quote=caballero][/quote]
я только изучаю php....
11. Ts.Saltan - 24 Августа, 2014 - 09:35:17 - перейти к сообщению
wawelon пишет:

я только изучаю php....

Тогда продолжайте изучать. Вот когда освоите простенькие приложения и когда придёт время позаботиться об их безопасности, тогда вернётесь к mysqli.
Нужно именно понять, в чём преимущество mysqli, подготовки запросов, а не бессмысленно кодить именно так, потому что другие так делают.

 

Powered by ExBB FM 1.0 RC1