PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (14): « 1 [2] 3 4 5 6 7 8 9 ... » В конец
Найдено сообщений: 209
arimanecro
Отправлено: 15 Сентября, 2016 - 15:55:51 • Тема: Как вывести 2 идентичных sql запроса в foreach? • Форум: Вопросы новичков
Ответов: 13 Просмотров: 439
Sail
спс, за наводку )
Опять наступил на те же грабли, который раз...
Вообщем проблема была в следующем:
Поскольку я сделал сокращенный вариант кода, то сделал ошибку в
в оригинале я выводил так:
а в $items = $result->fetchAll(); результат хранится всегда в нулевом индексе, поэтому когда приходила единица и выше, то естественно он ничего не видел.
Вместо $k надо тупо оставлять ноль:
ну вот и все работает, одинаковые запросы в цикле, обрабатываются как надо
arimanecro
Отправлено: 15 Сентября, 2016 - 15:03:07 • Тема: Как вывести 2 идентичных sql запроса в foreach? • Форум: Вопросы новичков
Ответов: 13 Просмотров: 439
Цитата: Тем более зачем делать два одинаковых запроса к базе.
да хотя бы для той же корзины. Когда в корзине два одинаковых товара, но с разными атрибутами, например в красном и зеленом варианте.
Чтобы вывести то же фото и название, надо обраиться к БД
arimanecro
Отправлено: 15 Сентября, 2016 - 11:52:59 • Тема: Как вывести 2 идентичных sql запроса в foreach? • Форум: Вопросы новичков
Ответов: 13 Просмотров: 439
Был удивлен, что в цикле, если сделать 2 идентичных запроса, то второй проигнорится, вернее вторая итерация пройдет, но значения из sql запроса не подставятся.
Например:
PHP:
скопировать код в буфер обмена
$arr = [ '0' => '1' , '1' => '1' ] ; // одинаковые значения
foreach ( $arr as $k => $v ) {
$result = Db:: $dbh -> query ( "SELECT title FROM table WHERE id = $v " ) ;
$items = $result -> fetchAll ( ) ;
echo "<p>$items[title] </p>" ;
}
Выводятся два параграфа, но только в первом подставлено значение title.
С чем это связано и как сделать, чтобы выводилось два запроса?
arimanecro
Отправлено: 14 Сентября, 2016 - 15:10:26 • Тема: PDO::FETCH_OBJ • Форум: Вопросы новичков
Ответов: 4 Просмотров: 202
Ch_chov пишет: А что там такого страшного с производительностью происходит? Вы делали бенчмарки?
не я лично, а др.чел -- https://gist[dot]github[dot]com/stephen-hill/5508483
Цитата: PDO::FETCH_ASSOC - 936 ms
PDO::FETCH_BOTH - 948 ms
PDO::FETCH_NUM - 1,184 ms
PDO::FETCH_OBJ - 1,272 ms
PDO::FETCH_LAZY - 1,276 ms
For large data sets, these results are typical:
PDO::FETCH_LAZY - 5,490 ms
PDO::FETCH_NUM - 8,818 ms
PDO::FETCH_ASSOC- 10,220 ms
PDO::FETCH_BOTH - 11,359 ms
PDO::FETCH_OBJ - 14,027 ms
==============
плюс повсеместно твердят, что объект это ресурсожрущая сущность, если бы это не было так, то нах тогда придумывать синглтон?
arimanecro
Отправлено: 14 Сентября, 2016 - 10:09:38 • Тема: PDO::FETCH_OBJ • Форум: Вопросы новичков
Ответов: 4 Просмотров: 202
Для чего нужен данный атрибут? Вернее когда его рационально использовать?
Ведь создание объекта это затраты ресурсов, почему не оставлять режим массива(например PDO::FETCH_ASSOC) ?
Или это делается тупо ради ООП стилистики? Разве не глупо ради красивой визуализации кода, жертвовать производительностью?
arimanecro
Отправлено: 09 Сентября, 2016 - 15:09:18 • Тема: Задачка на сообразительность... • Форум: Вопросы новичков
Ответов: 9 Просмотров: 394
Додумал, как это можно сделать
Кому интересно выкладываю
PHP:
скопировать код в буфер обмена
trait Validators
{
public function filterInputs
( array $inputs , $filter , $min , $max ) { foreach ( $inputs as $k => $v ) {
$func = "get" . $filter ;
$this -> $func ( $k , $v , $min , $max ) ;
}
}
return $this ;
}
public function getLength( $k , $input , $min , $max )
{
$options = [
'options' => [
'min_range' => $min ,
'max_range' => $max
]
] ;
? :
$_SESSION [ 'err_valid' ] [ ] = "<strong>" . ucfirst ( $k ) . ":</strong> must be $min -$max characters" ; }
// далее идут ещё функции валидаторы, которые начинаются на get, не буду их копировать, чтобы не загромождать.
===========
Приходит ПОСТ, например с полями name, adress, email, вот мы их и фильтруем таким образом:
В случае не прохождения фильтрации, ключи корректно заносятся в $_SESSION['err_valid'], что и требовалось
arimanecro
Отправлено: 08 Сентября, 2016 - 23:53:51 • Тема: Задачка на сообразительность... • Форум: Вопросы новичков
Ответов: 9 Просмотров: 394
Поясню для чего это...
Есть функция, которая принимает строку, а именно POST значение и внутри этой ф-ии, данное значение проходит фильтрацию и когда фильтрация не пройдена, то выводится ошибка с текстом: Переменная такая-то(а вот здесь и требуется ключ, так как именно он и несет в себе имя переменной) не является(например) имейлом.
Я сейчас не за рабочим компом, поэтому скопировать не могу, но "перескажу" в сжатой форме:
PHP:
скопировать код в буфер обмена
function test( $name ) {
$_SESSION [ 'error' ] [ ] = "$name не является числом" // естественно подставится значение, а я хочу чтобы отобразилось имя элемента массива
}
return $this ;
}
test( $_POST [ 'number' ] ) -> test ( $_POST [ 'name' ] ) ;
Вообщем самое главное, это отобразить имя элемента массива, который передается в ф-ию.
arimanecro
Отправлено: 08 Сентября, 2016 - 16:47:42 • Тема: Задачка на сообразительность... • Форум: Вопросы новичков
Ответов: 9 Просмотров: 394
Приветствую.
Вот столкнулся с довольно "простой" задачей..
PHP:
скопировать код в буфер обмена
$colors = [ 'red' => '' , 'green' => '' ] ;
function test( $value ) {
// показать ключ $value
}
test( $colors [ 'red' ] ) ; // нужно чтобы вывел red
В массиве специально значения одинаковые , поэтому array_search не прокатит. Ф-ия key также не подойдет, потому что аргументом должен быть массив, а не строка.
Страниц (14): « 1 [2] 3 4 5 6 7 8 9 ... » В конец
Powered by ExBB FM 1.0 RC1. InvisionExBB