Как запустить цикл и внутренний цикл в php один раз [дубликат]

Вы можете использовать конфигурационную электронную почту с помощью codeigniter, например, используя smtp (простой способ):

$config = Array(
        'protocol' => 'smtp',
        'smtp_host' => 'mail.domain.com', //your smtp host
        'smtp_port' => 26, //default port smtp
        'smtp_user' => 'name@domain.com',
        'smtp_pass' => 'password',
        'mailtype' => 'html',
        'charset' => 'iso-8859-1',
        'wordwrap' => TRUE
);
$message = 'Your msg';
$this->load->library('email', $config);
$this->email->from('name@domain.com', 'Title');
$this->email->to('emaildestination@domain.com');
$this->email->subject('Header');
$this->email->message($message);

if($this->email->send()) 
{
   //conditional true
}

Это работает для меня!

0
задан FiverrAnimation 11 May 2016 в 11:56
поделиться

3 ответа

Чтобы сохранить изображения с продуктом, вы можете добавить столбец imageurl в таблицу продуктов. Сопоставьте имена изображений с , и вставьте эту строку имени изображения в таблицу продуктов. ваша таблица выглядит ниже.

 +--------------+--------------+---------------------------+
 |     id       |    title     | imageurl                  |
 +--------------+--------------+---------------------------+
 |      1       |  Laptop      | lap1.png,lap2.png,lap3.png|
 +--------------+--------------+---------------------------+
 |      2       |  Speakers    | spe1.png                  |

Надеюсь, вы поняли, что я объясню.

0
ответ дан Mujahidh 20 August 2018 в 23:01
поделиться

Этот случай не является редкостью: у вас есть две таблицы в отношениях от одного до многих.

Вы никогда не должны вставлять SQL-вызов в цикл, если вы можете его избежать, но есть решение быть сделал один вызов SQL или два.

Один вызов SQL может быть:

SELECT id, title, imageURL
  FROM products LEFT JOIN productImages ON id=productid

Недостатком этого является то, что вы извлекаете заголовок несколько раз для каждого продукта, и это расточительно.

Используя два оператора SQL, вы можете загружать заголовки один раз для каждого продукта:

SELECT id, title FROM products

Результаты этого запроса могут быть сохранены в ассоциативном массиве - так, чтобы вы может искать заголовок для каждого идентификатора.

Второй запрос:

SELECT productid, imageURL FROM productImages ORDER BY productid, imageURL

Вы можете просмотреть результаты этого запроса, выплевывая заголовок по ходу.

0
ответ дан SQL Hacks 20 August 2018 в 23:01
поделиться

Некоторые улучшения для вас могут быть:

1) Не используйте select *. Вместо этого используйте имена столбцов. например select products.id, products.title, productimages.imageurl

2) Используйте JOIN вместо вложенного цикла

Итак, вы можете попробовать выполнить запрос таких данных, как:

select products.id, products.title, productimages.imageurl
from products
join productimages on products.id = productimages.productid
ORDER BY products.id LIMIT 10
1
ответ дан Suyog 20 August 2018 в 23:01
поделиться
  • 1
    Он работает, но время запроса не изменилось. это заняло 9 секунд, чтобы выполнить раньше, и теперь это то же самое с этим кодом. – FiverrAnimation 11 May 2016 в 12:21
  • 2
    Оптимизация скорости запроса @FiverrAnimation зависит не только от того, как вы формируете свой запрос. Это также зависит от нормализации базы данных, индексации таблиц, даже иногда некоторых параметров сервера, среды, в которой работает ваша база данных и приложения, и т. Д. Поэтому вы должны учитывать все эти факторы для подсчета времени выполнения запроса – Suyog 11 May 2016 в 12:26
  • 3
    Дело в том, что без вложенного цикла запрос занимает 0,5 секунды, а с вложенным циклом - 9 секунд. Поэтому он оставляет нам только один вариант - productimages отвечает за задержки запросов – FiverrAnimation 11 May 2016 в 12:51
Другие вопросы по тегам:

Похожие вопросы: