Как правильнее писать (без паранои)

dimitrius

Новичок
Как лучше? можно опустить преобразование строки в bool? случайное изменение значения $hookName после обработки в pSQL()?
Вариант 1(конечный)
PHP:
public function creatHook($hookName){
            $hooksRegistered = Db::getInstance()->getValue('SELECT COUNT(*) FROM '._DB_PREFIX_
                    .'hook WHERE `name` =\''.pSQL($hookName).'\'');
            if((strlen((int)$hooksRegistered) == strlen($hooksRegistered)) && (int)$hooksRegistered)
                return true;
            else{
                $query = 'INSERT INTO '._DB_PREFIX_.'hook(name, title, description, position, live_edit) VALUES(\''.pSQL($hookName)
                        .'\',\''.pSQL($hookName).'\',\'Show on authentication page if order processing\',1,0)';
              if(Db::getInstance()->execute($query))
                    return true;
                else
                    return false;
            }  
        }
Вариант 2 (начальный):
PHP:
public function creatHook($hookName){
            $hookName = pSQL($hookName);
            if(Db::getInstance()->getValue('SELECT COUNT(*) FROM '._DB_PREFIX_.'hook WHERE `name` =\''.$hookName.'\''))
                return true;
            else{
                $query = 'INSERT INTO '._DB_PREFIX_.'hook(name, title, description, position, live_edit) VALUES(\''.$hookName
                        .'\',\''.$hookName.'\',\'Show on authentication page if order processing\',1,0)';
                if(Db::getInstance()->execute($query))
                    return true;
                else
                    return false;
            }
            
        }
 
Последнее редактирование модератором:

riff

Новичок
Вне зависимости от того что ты спросил, ты задал неверный вопрос. Ты должен был начать с того "Как привести sql в читабельный вид и избавиться от .'\',\''..'\',\'".

А вообще, тебе достаточно было первого начального варианта.
 
Последнее редактирование:

hell0w0rd

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

yanis

Новичок
Можете приводить результирующую строку в bool, городить непонятный огород смысла нет. "Случаное" изменение локальной переменной в приведенном коде невозможно, только если это не ссылка на объект.
Также ваш код можно упростить.
PHP:
public function creatHook($hookName){
    $hookName = pSQL($hookName);
    if(Db::getInstance()->getValue('SELECT COUNT(*) FROM '._DB_PREFIX_.'hook WHERE `name` =\''.$hookName.'\''))
        return true;

    $query = 'INSERT INTO '._DB_PREFIX_.'hook(name, title, description, position, live_edit) VALUES(\''.$hookName
        .'\',\''.$hookName.'\',\'Show on authentication page if order processing\',1,0)';
    return (bool) Db::getInstance()->execute($query); 
}
 
Сверху