Проверка на ред от базата данни

teroristd

Registered
Здравейте, имам следната ситуация. При стартиране на приложението в базата данни от сесията ми се записва a:0:{} ако не е логнат потребителя и a:1:{s:3:"log";s:6:"logged";} ако се е логнал. Въпроса ми е как да проверя дали полето е празно (демек a:0:{}) или има запис? Полето го вадя така $row['sess_data'].
 
teroristd каза:
Здравейте, имам следната ситуация. При стартиране на приложението в базата данни от сесията ми се записва a:0:{} ако не е логнат потребителя и a:1:{s:3:"log";s:6:"logged";} ако се е логнал. Въпроса ми е как да проверя дали полето е празно (демек a:0:{}) или има запис? Полето го вадя така $row['sess_data'].
Дай малко код! Предполагам, че говориш за json_decode на стринга. В противен случай можеш да направиш един regex с прег матч така:
PHP:
$string = 'a:1:{s:3:"log";s:6:"logged";}';
preg_match('/{(.*?)}/',$string,$match);
if(!empty($match[1])){
	echo 'Има стринг!';
}else{
	echo 'Няма стринг!';
}
И съответно за теста така:
$string = 'a:1:{}';

https://regex101.com/r/xX0yY2/1
 
Това е сериализирана информация която влиза при стартирането на сесията, и ако не е логнат юзъра е a:0:{}, а ако е логнат е нещо от типа на {s:3:"log";s:6:"logged";}, като това аз го вкарвам с едно свойство $this->_dbSess->log = 'logged';
 
teroristd каза:
Това е сериализирана информация която влиза при стартирането на сесията, и ако не е логнат юзъра е a:0:{}, а ако е логнат е нещо от типа на {s:3:"log";s:6:"logged";}, като това аз го вкарвам с едно свойство $this->_dbSess->log = 'logged';
Досетих се и сам но по-късно. Пробвай с empty($row['sess_data']) или isSet($row['sess_data'])

Другият варянт е да серилиазилаш масива:
PHP:
$string = serialize($row['sess_data']);
preg_match('/{(.*?)}/',$string,$match);
if(!empty($match[1])){
        echo 'Има стринг!';
}else{
        echo 'Няма стринг!';
}

http://serialize.onlinephpfunctions.com/
 
Оправих се по друг начин. Оказа се че мога да го взема по същия начин по който го слагам.
if ($this->_dbSess->log == 'logged') {
return 'logged';
}
Мерси все пак +1.
 
teroristd каза:
Оправих се по друг начин. Оказа се че мога да го взема по същия начин по който го слагам.
if ($this->_dbSess->log == 'logged') {
return 'logged';
}
Мерси все пак +1.
Да но да не се укаже по-бавният варянт? По-четливо е наистина но да не се правят излишни проверки. Направи си по-бърз да е този частен случай. :)
 

Back
Горе