PHP.SU

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

Страниц (4): « 1 2 [3] 4 »

> Найдено сообщений: 58
rgl Отправлено: 29 Августа, 2017 - 19:22:31 • Тема: Операция ++ со строками • Форум: Прочее

Ответов: 2
Просмотров: 52
Операция ++ применима не только к числам, но и к стркам. А вы это знали? Как вы считаете, это может быть полезным или нет?
PHP:
скопировать код в буфер обмена
  1. $a = 'aa'; # 'aa'
  2. ++$a; # 'ab'
  3. ++$a; # 'ac'
  4.  
  5. $b = 'ax'; # 'ax'
  6. ++$b; # 'ay'
  7. ++$b; # 'az'
  8. ++$b; # 'ba'
  9. ++$b; # 'bb'
  10.  
  11. $c = 'zx'; # 'zx'
  12. ++$c; # 'zy'
  13. ++$c; # 'zz'
  14. ++$c; # 'aaa'
  15. ++$c; # 'aab'
  16.  
rgl Отправлено: 29 Августа, 2017 - 18:41:37 • Тема: insert в цикле select • Форум: Вопросы новичков

Ответов: 6
Просмотров: 629
Мелкий пишет:
И не надо вставлять null очевидно подразумевая дефолтное значение. Если необходимо дефолтное значение - не указывайте такое поле в insert

Кажется, если указать null, то вставляется именно null а не умолчательное значение (ну за исключением автоинкрементного поля)?
З.Ы.
Да, сейчас проверил, именно так:
CODE (text):
скопировать код в буфер обмена
  1. sqlite> create table testtable (fld1 integer, fld2 integer default 123);
  2. sqlite> insert into testtable values (15,null);
  3. sqlite> insert into testtable (fld1) values(16);
  4. sqlite> select * from testtable;
  5. 15|
  6. 16|123
  7.  
rgl Отправлено: 29 Августа, 2017 - 18:00:16 • Тема: insert в цикле select • Форум: Вопросы новичков

Ответов: 6
Просмотров: 629
Если в селекте есть count и нет group by, то кажется возвращается всегда одна запись?
А вообще такие непонятки отлаживать - вместо (или дополнительно к) запросу сам запрос распечатывать. Типа так:
PHP:
скопировать код в буфер обмена
  1. echo "сейчас будет запрос: " . "SELECT count(id) con, spec FROM `fk`" . "<br>\n";
  2. if ($result = $mysqli->query("SELECT count(id) con, spec FROM `fk`")) {
  3. while( $Arr = $result->fetch_assoc() ){
  4.  
  5. echo "а сейчас будет: " . "INSERT INTO `fk_stat` (`id`, `day_stat`, `spec`, `str`) VALUES (NULL, NOW(), '".$Arr['spec']."', '".$Arr['con']."');" . "<br>\n";
  6. mysqli_query($mysqli, "INSERT INTO `fk_stat` (`id`, `day_stat`, `spec`, `str`) VALUES (NULL, NOW(), '".$Arr['spec']."', '".$Arr['con']."');");
  7.          }
  8. }
  9.  
rgl Отправлено: 28 Августа, 2017 - 14:56:15 • Тема: Пример с опережающей проверкой из Фридла • Форум: Регулярные выражения

Ответов: 4
Просмотров: 637
mstdmstd пишет:
(?=(\d\d\d)+) # , у которых количество цифр справа кратно трем

Может, так: (?=(\d\d\d)+(\D|$)) # , у которых количество цифр справа кратно трем

Т.е. количество цифр кратно трем, когда после одной или нескольких троек идет не цифра или вообще ничего нет, а у вас такой проверки нет, т.е. проверятеся что есть хотя бы одна тройка, а что дальше - не важно
PHP:
скопировать код в буфер обмена
  1. $str1 = 'The US population is 298444215 lorem';
  2. $str2 = 'The US population is 298444215';
  3.  
  4. $pattern = '/(?<=\d)(?=(?:\d\d\d)+(?:\D|$))/';
  5.  
  6. $matches1 = preg_replace($pattern, ',', $str1);
  7. $matches2 = preg_replace($pattern, ',', $str2 );
  8.  
  9. echo "$matches1\n$matches2\n";
  10.  

P.S.
Вариант без заглядывания назад:
PHP:
скопировать код в буфер обмена
  1. $str1 = 'The US population is 298444215 lorem';
  2. $str2 = 'The US population is 298444215';
  3.  
  4. $pattern = '/(\d)(?=(?:\d\d\d)+(?:\D|$))/';
  5.  
  6. $matches1 = preg_replace($pattern, '$1,', $str1);
  7. $matches2 = preg_replace($pattern, '$1,', $str2 );
  8.  
  9. echo "$matches1\n$matches2\n";
  10.  
rgl Отправлено: 28 Августа, 2017 - 14:16:56 • Тема: Курьез - почему в ретурне функции есть строка а в функции которая вызывает нет • Форум: Вопросы новичков

Ответов: 6
Просмотров: 477
Как видно, в функции есть return не всегда, а в зависимости от if. Могу предположить, что return не нужен, если все ОК, а нужет был только для отладки.
rgl Отправлено: 28 Августа, 2017 - 13:53:12 • Тема: SQLite3 оптимизация хранения • Форум: SQL и Архитектура БД

Ответов: 1
Просмотров: 54
tonchikp пишет:
ведь тут по сути 3 поля с UNIQUE (rowid, id, obj)

ТУТ только 2 поля UNIQUE т.к. rowid и id - два именя для одного и того же поля

Проведем небольшой эксперимент:
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE table1 (id INTEGER PRIMARY KEY AUTOINCREMENT, obj TEXT UNIQUE);
  2. INSERT INTO table1 (obj) VALUES ('aaaaa'),('bbbbb'),('ccccc');
  3. INSERT INTO table1 VALUES (25,'zzzzz');
  4. SELECT rowid,id FROM table1;

получим

как выдно, 1. значения совпадают 2. даже в загловке выдно, что это одно и то же поле (кстати, чтобы включить вывод заголовка в SQLite, дайте команду .header on, по умолчанию заголовки не выводятся)
Продолжим эксперименты, теперь создадим поле без AUTOINCREMENT

CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE table2 (id INTEGER PRIMARY KEY, obj TEXT UNIQUE);
  2. INSERT INTO table2 (obj) VALUES ('aaaaa'),('bbbbb'),('ccccc');
  3. INSERT INTO table2 VALUES (25,'zzzzz');
  4. SELECT rowid,id FROM table2;

Результат в точности тот же, т.е. INTEGER PRIMARY KEY оказывается достаточно.

Попробуем еще поэкспериментировать, заменим INTEGER на INT:
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE table3 (id INT PRIMARY KEY, obj TEXT UNIQUE);
  2. INSERT INTO table3 VALUES (25,'zzzzz');
  3. SELECT rowid,id FROM table3;


Как видим, результат изменился, т.е. теперь id и rowid - два разных поля.

Т.е. резюме, поле rowid создается не всегда иногда это просто другое имя длы уже имеющегося поля. Когда конкретно? Тут есть некая магия, порой противоречащая здравому смыслу, надо просто заучить, либо пробовать и смотреть что получается (как пробовать я показал).
(Добавление)
tonchikp пишет:
Может лучше так:
Чтобы ответить на этот вопрос, нужно посмотреть на всю задачу целиком, а не только на структуру таблицы. Но, (мое скромное ИМХО) скорее всего нет, не лучше. Если поле id нужно, (где-то еще используется) то оставьте как есть. А если не нужно - можно его и убрать, физически таблица останется точно такая же. Но неявное поле rowid по умолчанию заводится не случайно, так в данной конкретной СУБД опримизированы индексы, что с ним лучше. Не претендую на истину в последней инстанции.
rgl Отправлено: 25 Августа, 2017 - 20:22:06 • Тема: filemtime отличается от значения в свойствах Windows • Форум: Работа с файловой системой и файлами

Ответов: 3
Просмотров: 2218
Может, по ошибке делается поправка на летнее время?
rgl Отправлено: 25 Августа, 2017 - 20:19:35 • Тема: Очистка массива по ключу • Форум: Вопросы новичков

Ответов: 7
Просмотров: 404
Похоже, я был не прав. Вот что пишут
Цитата:
The foreach construct does not operate on the array itself, but rather on a copy of it.
You can insert or delete elements in the body of a foreach loop, safe in the knowledge
that the loop won’t attempt to process the deleted or inserted elements.

Вот так работает, ошибок не заметил.
PHP:
скопировать код в буфер обмена
  1. $a = range( 'a', 'z' );
  2.  
  3. foreach( $a as $k=>$v ) {
  4.   if( $k % 3 )
  5.     unset( $a[$k] );
  6. }
  7.  
  8. print_r( $a );
  9.  
  10. #X-Powered-By: PHP/5.3.13
  11. #Content-type: text/html
  12. #
  13. #Array
  14. #(
  15. #    [0] => a
  16. #    [3] => d
  17. #    [6] => g
  18. #    [9] => j
  19. #    [12] => m
  20. #    [15] => p
  21. #    [18] => s
  22. #    [21] => v
  23. #    [24] => y
  24. #)
  25.  

Для меня это неожиданность. Соори что пытался ввести в заблуждение
rgl Отправлено: 25 Августа, 2017 - 18:59:50 • Тема: Очистка массива по ключу • Форум: Вопросы новичков

Ответов: 7
Просмотров: 404
Строитель пишет:
rgl пишет:
А разве внутри foreach можно из массива что-то удалять?
Если передавать в цикл значение по ссылке, то можно.

Разве??
Если передавать ЗНАЧЕНИЕ по ссылке то можно ЗНАЧЕНИН и менять (т.е. ключ остается тот же, значение становится другим), но нельзя делать что-либо, что меняет ключи, т.е. добавлять или удалять элементы. А в примере как раз было удаление.
rgl Отправлено: 25 Августа, 2017 - 17:31:23 • Тема: Очистка массива по ключу • Форум: Вопросы новичков

Ответов: 7
Просмотров: 404
А разве внутри foreach можно из массива что-то удалять?
rgl Отправлено: 23 Августа, 2017 - 11:20:33 • Тема: Помогите с кодом • Форум: Вопросы новичков

Ответов: 6
Просмотров: 439
38-я строчка - а почему одинарные кавычки в конце двоятся? (к нотису эта ошибка отношения не имеет)
А нотис из-за того, что индекс действительно не определен, что показывают 33-я и 34 строчки.

P.S.
Кстати, вставка напрямую значений, полученных от клиента в SQL-ные селекты (типа ... WHERE name='$_POST[Login]') может быть дыркой в безопасности. Используйте хотя-бы addslashes()
rgl Отправлено: 22 Августа, 2017 - 17:56:04 • Тема: MySQL - изменить имя пользователя • Форум: SQL и Архитектура БД

Ответов: 3
Просмотров: 66
Мелкий пишет:
RENAME USER old_user TO new_user;

Спасибо, получилось!
MouseZver пишет:
UPDATE USRTABLE SET USERNAME = 'ZverMouse' WHERE USERNAME = 'MouseZver' LIMIT 1

Спасибо, попробовать не успел (или побоялся) но теперь если что, буду знать где "копать" Улыбка
rgl Отправлено: 22 Августа, 2017 - 16:11:40 • Тема: MySQL - изменить имя пользователя • Форум: SQL и Архитектура БД

Ответов: 3
Просмотров: 66
Вот есть пользователь, у него есть имя, пароль и всякие разные права. Нужно изменить ему имя, но сохранить все остальное. Возможно ли это? Конечно, можно завести нового пользователя с новым нужным именем и дать ему те же права, а старого удалить, но может есть способ проще? В phpMyAdmin такой возможности не нашел, а через консоль команды давать боюсь даже пытаться.
rgl Отправлено: 22 Августа, 2017 - 15:44:56 • Тема: Программа для ручных запросов • Форум: Прочее

Ответов: 5
Просмотров: 89
Ch_chov пишет:
cls - windows, clear (ctrl +L) - linux

Ну вот зашел я в телнет, сказал open mysite 80 и дальше все что я пишу, уже запрос (т.е. я хочу написать что-то типа 'GET / HTTP/1.1' и он отображает это поверх уже написанных нескольких строк. И где ему сказать cls??

htmaker пишет:
Как насчет браузера и его консоли (Ctrl+F12 -> вкладка Сеть)? Если речь идет об HTTP протоколе.

И как мне там сделать запрос? Не посмотреть что получил браузер, а самому руками запрос набрать?
(Добавление)
Ch_chov пишет:
Или Postman

Я хочу простенькую консольную программу, а не "A powerful GUI platform to make your API development faster & easier". Чем такое навороченное устанавливать, проще самому написать. Просто подумал, что наверняка уже есть готовая, зачем изобретать велосипед, вот и пытаюсь найти, пока безуспешно.

Страниц (4): « 1 2 [3] 4 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB