Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Можно ли обойтись без вложенного запроса в цикле?
 
 автор: antf   (19.11.2014 в 18:28)   письмо автору
 
 

Здравствуйте. Можно ли обойтись без вложенного запроса в цикле?


<?php
$query    
"SELECT f.*,
                    u.id_post
              FROM 
{$gl_db_prefix}faq as f, {$gl_db_prefix}users as u
             WHERE  f.answer_id_user = u.id_user"
;
$results db_select($query);
if(
is_array($results))
{
  
$cnt count($results);
  for(
$i 0$i $cnt$i++)
  {
    
$id_post        $results[$i]['id_post'];
    
$answer_post    stripslashes(db_select_one("SELECT title FROM {$gl_db_prefix}posts WHERE id_post = {$id_post}"));
  }
}
?>

  Ответить  
 
 автор: confirm   (20.11.2014 в 08:52)   письмо автору
 
   для: antf   (19.11.2014 в 18:28)
 

>Можно ли обойтись без вложенного запроса в цикле?

А запрос в цикле разве "вложенный"? Вот его можно перенести в первый запрос, или тот же JOIN.

А почему stripslashes() при извлечении данных а не при записи?

  Ответить  
 
 автор: Trianon   (22.11.2014 в 21:00)   письмо автору
 
   для: antf   (19.11.2014 в 18:28)
 

<?php
$query    

"SELECT f.*,
          u.id_post,
          p.title,
   FROM  
{$gl_db_prefix}faq as f 
     JOIN  
{$gl_db_prefix}users as u ON f.answer_id_user = u.id_user
     LEFT JOIN  
{$gl_db_prefix}posts as p ON p.id_post = u.id_post
"
;
$results db_select($query);
if(
is_array($results))
{
  
$cnt count($results);
  for(
$i 0$i $cnt$i++)
  {
    
$id_post        $results[$i]['id_post'];
    
$answer_post    stripslashes($results[$i]['title']);
  }
}
?>


stripslashes и вправду неуместен здесь, и провоцирует вопросы по организации обработки данных.

  Ответить  
 
 автор: antf   (25.11.2014 в 03:21)   письмо автору
 
   для: Trianon   (22.11.2014 в 21:00)
 

>stripslashes и вправду неуместен здесь, и провоцирует вопросы по организации обработки данных.

addslashes при добавлении, stripslashes при выборке. Так было написано в книгах, по которым я учился. Вроде бы старинный метод, которого я пока придерживаюсь. Как по-другому? Как правильно обработать данные при добавлени их в бд и при выводе из нее?

  Ответить  
 
 автор: Trianon   (26.11.2014 в 11:05)   письмо автору
 
   для: antf   (25.11.2014 в 03:21)
 

Такой подход приводит к потенциальному риску искажения данных в самой таблице (addslashes) и на выборке из нее (stripslashes)
Подробно это раскрывалось в свое время в разборе решений задачи 21.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования