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 :: Версия для печати :: где отвалился пробел в MySQL ?
Форумы портала PHP.SU » Разное » Прочее » где отвалился пробел в MySQL ?

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

1. LIME - 02 Мая, 2015 - 23:02:21 - перейти к сообщению
вдохновился http://forum.php.su/topic.php?fo...1&topic=2917 ))
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE IF NOT EXISTS `test` (
  2.   `col` char(3) NOT NULL
  3. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
  4.  
  5. INSERT INTO `test` (`col`) VALUES ('ss ');

PHP:
скопировать код в буфер обмена
  1. $result = $db->query('SELECT * FROM test');
  2.     while($row = $result->fetch_array()){
  3.         var_dump($row);
  4. /*
  5. array(2) {
  6.   [0]=>
  7.   string(2) "ss"
  8.   ["col"]=>
  9.   string(2) "ss"
  10. }
  11. куда пропал пробел? И главное зачем?
  12. развлекайтесь господа)
  13. */
  14.     }
2. dcc0 - 02 Мая, 2015 - 23:05:07 - перейти к сообщению
Где варианты ответов?
3. LIME - 02 Мая, 2015 - 23:05:49 - перейти к сообщению
тут без вариантов
интересно где потеряли?
4. Мелкий - 02 Мая, 2015 - 23:15:43 - перейти к сообщению
Ну это просто.
Спойлер (Отобразить)
5. LIME - 02 Мая, 2015 - 23:17:31 - перейти к сообщению
Да
Но нет это не то же самое по своей причине
6. dcc0 - 02 Мая, 2015 - 23:17:56 - перейти к сообщению
Мелкийэто поэтому в регулярках рекомендуют использовать \S , а не сам пробел?
7. LIME - 02 Мая, 2015 - 23:20:02 - перейти к сообщению
Спойлер (Отобразить)
8. Sail - 02 Мая, 2015 - 23:56:10 - перейти к сообщению
Вообще-то, чёрным по-белому (если не перенастраивать) описана явная зависимость от PAD_CHAR_TO_FULL_LENGTH
9. Мелкий - 03 Мая, 2015 - 00:21:39 - перейти к сообщению
Спойлер (Отобразить)
10. LIME - 03 Мая, 2015 - 00:27:22 - перейти к сообщению
Мелкий пишет:
Нет никаких случайных значений, char всегда пишется полностью.
странное заявление
Конечно они пишется полностью
А случайными были бы значения оставшиеся от предыдушего использования области памяти/диска и тогда не было бы понятно где закончилась введенная строка
Именно потому и добивается длина
Именно для иниацилизации случайных значений в оставшейся области
Собственно чтоб разъяснить этот момент интнресующимся и была зачата тема
11. Мелкий - 03 Мая, 2015 - 09:49:56 - перейти к сообщению
LIME пишет:
от предыдушего использования области памяти/диска

Да, я чуть позже вкурил, что ты про процессы так глубоко в С. Но всё равно - только памяти. Область диска могла даже не вычитываться, а сразу писаться. А если вычитывалась - то это всё равно мусор уже в памяти.
12. LIME - 03 Мая, 2015 - 10:54:39 - перейти к сообщению
включаю режим зануды))
Си тут какбэ ни причем. Такова уж логика что память не заполняют нулями при освобождении) чтоб быстрее
а насчет диска да
добивается скорее в памяти и пишется на диск уже сплошняком как есть
13. DeepVarvar - 03 Мая, 2015 - 13:30:23 - перейти к сообщению
И где посмотреть, что чар заполняется именно (ASCII code 32) пробелами?
Что-то мне подсказывает, что заполняется он "\0" (memset, bzero, ?fill).
А скорее всего даже не заполняется, т.к. первый встреченный такой нулбайт уже является обозначением конца строки.
И даже если там дальше что-то есть - оно не прочитается строковыми.
14. LIME - 03 Мая, 2015 - 14:03:11 - перейти к сообщению
DeepVarvar нет)
во первых в доках написано что пробел
во вторых вот тебе эксперимент - пропал пробел
при отдаче они с конца удаляются
(Добавление)
думаю что нет смысла использовать терминатор если читаем последовательно
только замедлимся на пропуск маленького участка
но хз что там у них внутрях
есть догадка но уже охота спать)
а посмотреть вообще можно
MyISAM хранит вполне читаемый файл
погляди если интересно
15. DeepVarvar - 03 Мая, 2015 - 14:24:28 - перейти к сообщению
LIME пишет:
пропал пробел
Автотрим?
Хотя что тут гадать -- нужно просто посмотреть сорцы, но щас мне тоже лениво ))

 

Powered by ExBB FM 1.0 RC1