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 :: Версия для печати :: Оптимальное обращение к БД
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Оптимальное обращение к БД

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

1. WebGraf - 14 Декабря, 2009 - 13:19:09 - перейти к сообщению
К примеру запрос:
Вариант 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.  


Нужно выбрать вариант быстрый, правильный и защищенный
(Добавление)
или предложить свой вариант
2. Rus88 - 14 Декабря, 2009 - 13:22:32 - перейти к сообщению
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.  

Вот самый оптимальный вариант
3. Мелкий - 14 Декабря, 2009 - 13:24:51 - перейти к сообщению
ммм, а в чём между ними разница? Предположим, что экранирование местами кавычек просто выпало.
Дополнительный параметр на ресурс ссылки у mysql_query нужен только на случай использования нескольких соединений, например с разными базами.

PHP:
скопировать код в буфер обмена
  1. mysql_query("SELECT `id`, `username` FROM `users` WHERE `status`=\"confirmed\" AND `status2`=\"".mysql_real_escape_string($var)."\" ORDER BY `id`");
4. WebGraf - 14 Декабря, 2009 - 13:28:07 - перейти к сообщению
Цитата:

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.  

А смысл использовать дополнительные переменные?
5. Rus88 - 14 Декабря, 2009 - 13:30:05 - перейти к сообщению
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.  

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


Ты ведь хотел оптимальный вариант, это и есть, хотя можно и по другомуУлыбка
6. WebGraf - 14 Декабря, 2009 - 13:31:10 - перейти к сообщению
Мелкий пишет:
mysql_query("SELECT `id`, `username` FROM `users` WHERE `status`=\"confirmed\" AND `status2`=\"".mysql_real_escape_string($var)."\" ORDER BY `id`");

Какие изьяны имеют мои коды выше, и отсутствует в вашем с двумя кавычками ""
(Добавление)
Rus88, можете аргументировать свой вариант?
7. EuGen - 14 Декабря, 2009 - 13:32:59 - перейти к сообщению
Давайте не будем сравнивать синее с зеленым и пойдем прочтем какой параметр для чего нужен, а так же http://php.net/security для тех, кто горит идеей безопасности.
8. WebGraf - 14 Декабря, 2009 - 13:50:24 - перейти к сообщению
Кинуть ссылку проще всего
9. valenok - 14 Декабря, 2009 - 14:05:34 - перейти к сообщению
Может за вас еще скопировать текст оттуда сюда ?
10. WebGraf - 14 Декабря, 2009 - 14:16:18 - перейти к сообщению
Жестоки вы всетаки.
1. анг язык полностью мне непонятен
2. теории не понимаю, хоть убейте, только примеры
11. Viper - 14 Декабря, 2009 - 14:38:11 - перейти к сообщению
WebGraf пишет:
Жестоки вы всетаки.
1. анг язык полностью мне непонятен
2. теории не понимаю, хоть убейте, только примеры


не жестоки. а надо хотя бы знать язык на уровне школы, и уметь читать.
1. для не говорящих на иностранном.. http://www.php[dot]ru/manual/security[dot]html
2. для понимания теории, её нужно прочитать.
12. WebGraf - 14 Декабря, 2009 - 15:07:18 - перейти к сообщению

Спасибо хоть за такой ответ
13. Мелкий - 14 Декабря, 2009 - 16:44:32 - перейти к сообщению
WebGraf пишет:
Какие изьяны имеют мои коды выше, и отсутствует в вашем с двумя кавычками ""

просто экранировать не нужные для логики PHP символы - правильнее. А то смотрит интерпретатор: хоп, строка "SELECT `id`, `username` FROM `users` WHERE `status`=" кончилась, а дальше - что-то странное. Наверное, это всё таки не кончилась строка, "подумает" он... А вдруг подумает иначе?
14. WebGraf - 14 Декабря, 2009 - 16:54:38 - перейти к сообщению
ага. только в моих примерах выше выше опечатка. или сам так или форум переделал
вместо " ".$var." " должно быть ' " . $var. " '
15. Мелкий - 14 Декабря, 2009 - 18:14:08 - перейти к сообщению
Ну я так и подумал, что это ошибка чего-либо. Вроде форум заменяет ' на " в тегах CODE.

 

Powered by ExBB FM 1.0 RC1