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.SU

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


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

> Без описания
WebGraf
Отправлено: 14 Декабря, 2009 - 13:19:09
Post Id


Новичок


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


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




К примеру запрос:
Вариант 1:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. mysql_connect('localhost', 'db_user, 'db_pass') or die('Could not connect');
  3. mysql_select_db('db_name') or die('Could not db');
  4.  
  5. mysql_query("SELECT `id`, `username` FROM `users` WHERE `status`='confirmed' AND `status2`='".mysql_real_escape_string($var)."' ORDER BY `id ` ");
  6.  


Вариант 2:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. mysql_connect('localhost', 'db_user, 'db_pass') or die('Could not connect');
  3. mysql_select_db('db_name') or die('Could not db');
  4.  
  5. mysql_query('SELECT `id`, `username` FROM `users` WHERE `status`="confirmed" AND `status2`="'.mysql_real_escape_string($var).'" ORDER BY `id ` ');
  6.  


Вариант 3:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. $mysql = mysql_connect('localhost', 'db_user, 'db_pass') or die('Could not connect');
  3. mysql_select_db('db_name', $mysql) or die('Could not db');
  4.  
  5. mysql_query('SELECT `id`, `username` FROM `users` WHERE `status`="confirmed" AND `status2`="'.mysql_real_escape_string($var).'" ORDER BY `id ` ', $mysql);
  6.  


Нужно выбрать вариант быстрый, правильный и защищенный
(Добавление)
или предложить свой вариант
 
 Top
Rus88
Отправлено: 14 Декабря, 2009 - 13:22:32
Post Id



Гость


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


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

[+]


WebGraf пишет:
К примеру запрос:
Вариант 1:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. mysql_connect('localhost', 'db_user, 'db_pass') or die('Could not connect');
  3. mysql_select_db('db_name') or die('Could not db');
  4.  
  5. mysql_query("SELECT `id`, `username` FROM `users` WHERE `status`='confirmed' AND `status2`='".mysql_real_escape_string($var)."' ORDER BY `id ` ");
  6.  


Вариант 2:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. mysql_connect('localhost', 'db_user, 'db_pass') or die('Could not connect');
  3. mysql_select_db('db_name') or die('Could not db');
  4.  
  5. mysql_query('SELECT `id`, `username` FROM `users` WHERE `status`="confirmed" AND `status2`="'.mysql_real_escape_string($var).'" ORDER BY `id ` ');
  6.  


Вариант 3:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. $mysql = mysql_connect('localhost', 'db_user, 'db_pass') or die('Could not connect');
  3. mysql_select_db('db_name', $mysql) or die('Could not db');
  4.  
  5. mysql_query('SELECT `id`, `username` FROM `users` WHERE `status`="confirmed" AND `status2`="'.mysql_real_escape_string($var).'" ORDER BY `id ` ', $mysql);
  6.  


Нужно выбрать вариант быстрый, правильный и защищенный
(Добавление)
или предложить свой вариант

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $dbname = "";
  4. $dbserver = "localhost";
  5. $dbuser = "";
  6. $dbpassword="";
  7.  
  8. $db = mysql_connect($dbserver,$dbuser,$dbpassword) or die("Ошибка подключения к базе данных";
  9. mysql_select_db($dbname,$db) or die("Ошибка выбора базы";
  10. mysql_query("SET NAMES cp1251",$db);
  11. ?>
  12.  

Вот самый оптимальный вариант
 
 Top
Мелкий Супермодератор
Отправлено: 14 Декабря, 2009 - 13:24:51
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




ммм, а в чём между ними разница? Предположим, что экранирование местами кавычек просто выпало.
Дополнительный параметр на ресурс ссылки у mysql_query нужен только на случай использования нескольких соединений, например с разными базами.

PHP:
скопировать код в буфер обмена
  1. mysql_query("SELECT `id`, `username` FROM `users` WHERE `status`=\"confirmed\" AND `status2`=\"".mysql_real_escape_string($var)."\" ORDER BY `id`");

(Отредактировано автором: 14 Декабря, 2009 - 13:26:57)



-----
PostgreSQL DBA
 
 Top
WebGraf
Отправлено: 14 Декабря, 2009 - 13:28:07
Post Id


Новичок


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


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




Цитата:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $dbname = "";
  4. $dbserver = "localhost";
  5. $dbuser = "";
  6. $dbpassword="";
  7.  
  8. $db = mysql_connect($dbserver,$dbuser,$dbpassword) or die("Ошибка подключения к базе данных";
  9. mysql_select_db($dbname,$db) or die("Ошибка выбора базы";
  10. mysql_query("SET NAMES cp1251",$db);
  11. ?>
  12.  

А смысл использовать дополнительные переменные?

(Отредактировано автором: 14 Декабря, 2009 - 13:28:39)

 
 Top
Rus88
Отправлено: 14 Декабря, 2009 - 13:30:05
Post Id



Гость


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


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

[+]


WebGraf пишет:
Цитата:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $dbname = "";
  4. $dbserver = "localhost";
  5. $dbuser = "";
  6. $dbpassword="";
  7.  
  8. $db = mysql_connect($dbserver,$dbuser,$dbpassword) or die("Ошибка подключения к базе данных";
  9. mysql_select_db($dbname,$db) or die("Ошибка выбора базы";
  10. mysql_query("SET NAMES cp1251",$db);
  11. ?>
  12.  

А смысл использовать дополнительные переменные?


Ты ведь хотел оптимальный вариант, это и есть, хотя можно и по другомуУлыбка
 
 Top
WebGraf
Отправлено: 14 Декабря, 2009 - 13:31:10
Post Id


Новичок


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


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




Мелкий пишет:
mysql_query("SELECT `id`, `username` FROM `users` WHERE `status`=\"confirmed\" AND `status2`=\"".mysql_real_escape_string($var)."\" ORDER BY `id`");

Какие изьяны имеют мои коды выше, и отсутствует в вашем с двумя кавычками ""
(Добавление)
Rus88, можете аргументировать свой вариант?
 
 Top
EuGen Администратор
Отправлено: 14 Декабря, 2009 - 13:32:59
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Давайте не будем сравнивать синее с зеленым и пойдем прочтем какой параметр для чего нужен, а так же http://php.net/security для тех, кто горит идеей безопасности.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
WebGraf
Отправлено: 14 Декабря, 2009 - 13:50:24
Post Id


Новичок


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


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




Кинуть ссылку проще всего
 
 Top
valenok
Отправлено: 14 Декабря, 2009 - 14:05:34
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




Может за вас еще скопировать текст оттуда сюда ?


-----
Truly yours, Sasha.
 
My status
 Top
WebGraf
Отправлено: 14 Декабря, 2009 - 14:16:18
Post Id


Новичок


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


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




Жестоки вы всетаки.
1. анг язык полностью мне непонятен
2. теории не понимаю, хоть убейте, только примеры
 
 Top
Viper
Отправлено: 14 Декабря, 2009 - 14:38:11
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




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


не жестоки. а надо хотя бы знать язык на уровне школы, и уметь читать.
1. для не говорящих на иностранном.. http://www.php[dot]ru/manual/security[dot]html
2. для понимания теории, её нужно прочитать.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
WebGraf
Отправлено: 14 Декабря, 2009 - 15:07:18
Post Id


Новичок


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


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





Спасибо хоть за такой ответ
 
 Top
Мелкий Супермодератор
Отправлено: 14 Декабря, 2009 - 16:44:32
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




WebGraf пишет:
Какие изьяны имеют мои коды выше, и отсутствует в вашем с двумя кавычками ""

просто экранировать не нужные для логики PHP символы - правильнее. А то смотрит интерпретатор: хоп, строка "SELECT `id`, `username` FROM `users` WHERE `status`=" кончилась, а дальше - что-то странное. Наверное, это всё таки не кончилась строка, "подумает" он... А вдруг подумает иначе?


-----
PostgreSQL DBA
 
 Top
WebGraf
Отправлено: 14 Декабря, 2009 - 16:54:38
Post Id


Новичок


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


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




ага. только в моих примерах выше выше опечатка. или сам так или форум переделал
вместо " ".$var." " должно быть ' " . $var. " '

(Отредактировано автором: 14 Декабря, 2009 - 17:15:46)

 
 Top
Мелкий Супермодератор
Отправлено: 14 Декабря, 2009 - 18:14:08
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Ну я так и подумал, что это ошибка чего-либо. Вроде форум заменяет ' на " в тегах CODE.


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB