Задать вопрос
  • Почему не выполняется запрос mysqli?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Проблема в пихании в код разных умных слов без понимания их смысла.
    Если убрать из кода слово MYSQLI_USE_RESULT, то волшебным образом ошибка исчезнет.
    Впрочем, я должен признать, что сермяжная правда в двух других ответах есть. Если последовать моему же совету, и использовать prepare/execute вместо query (поскольку эта парочка используе USE_RESULT без вариантов), то как раз и придется либо выбирать все данные, которые вернул запрос, либо освобождать ресурс через free(), либо перед выборкой дергать store_result().
    Но - повторюсь - в текущем коде этот параметр не имеет смысла и в то же время является причиной всех бед.

    Но проблемы этого кода на этом только начнутся.

    Во-первых, НИКОГДА больше пиши так: die(mysqli_error($mysqli)); а то станешь козленочком и тебя заберут в армию.
    Вместо die надо писать trigger_error()

    Во-вторых, НИКОГДА не подставляй переменные напрямую в строку запроса. Передавать данные надо только через плейсхолдеры. Если родной механизм слешком сложный, то можешь воспользоваться библиотекой phpfaq.ru/safemysql и код получится таким.
    $exists = $db->getOne("SELECT 1 FROM users WHERE social_id=?s",$social_id);
    if($exists){
    	//тут устанавливаются куки
    }else{
    	$db->query("INSERT INTO users (social_id) VALUES (?s)", $social_id); 
    }

    (выводить бессмысленные okay или oops не нужно)
    Ответ написан
    7 комментариев
  • Как делают вызов функции с разными параметрами?

    @bromzh
    Drugs-driven development
    Обычно всё вручную делают:
    function Foo(name, options) {
        this.name = name || 'default name';
        options = options || {};
        this.x = options.x || 100;
        this.y = options.y || 200;
        this.text = options.text || 'default value';
        this.fill = options.fill || 'default value';
    }

    Но надо быть осторожнее с ||. Это применимо только тогда, когда передаваемые параметры предполагаются не равными false (с двойным равно). Т.е. если x может принимать нулевое значение, то надо будет делать уже так:
    if (typeof params.x !== 'undefined') {
        this.x = params.x;
    } else {
        this.x = 100;  // значение по-умолчанию
    }

    Ну или использовать тренарный оператор, как уже написали.

    UPD
    Поясню логику. В js нет опциональных параметров. Однако, если функция объявлена с одним количеством аргументов, а вызывают её с меньшим, то ошибки не возникнет, а все незаполненные параметры становятся равными undefined внутри контекста функции. И, чтобы заполнить их какими-то данными по-умолчанию, используют логическое или - ||. Далее, имеется выражение: foo|| bar. Если foo будет соответствовать лжи, то выражение вернёт второй операнд. Если foo соответствует истине, то вернёт первый (в силу ленивости оператора). Тут есть тонкий момент. undefined соответствует лжи. Однако, если функия допускает значения foo, которые могут соответствовать лжи (null, false, {}, [], ''), то это выражение не будет работать правильно. Об этом надо помнить и обрабатывать такие случаи с помощью
    (if typeof foo === 'undefined') ? 'default value' : foo;
    .
    Ну и естественно, это выражение применимо и в обычных функциях (собственно, функция-конструктор и обычная функция ничем не отличаются, их отличает лишь использование, а именно - ключевое слово new). В таком случае пишут так:
    function foo(x, y, z) {
        x = x || 1;
        y = y || 'y';
        z = z || true;
        // После такой "инициализации" идёт код, использующий эти переменные.
    }

    Ну и в твоём примере точно таким же способом проверяются поля переданного объекта: если поле не передано в функцию, то при вызове его из объекта оно вернёт значение undefined.
    Ответ написан
    3 комментария
  • Как делают вызов функции с разными параметрами?

    Здесь
    В 3-ем ответе как раз демонстрируют то, о чем вы спрашиваете, и показывают механику этих действий.
    Ответ написан
    Комментировать
  • Есть ли хорошие уроки по Kinetic.js ?

    Keyten
    @Keyten
    Ответ написан
    Комментировать
  • Где взять класс php для работы с базами данных?

    Он наверное CRUD имеет ввиду а в PDO всё самому писать придётся
    Ответ написан
    Комментировать
  • Где взять класс php для работы с базами данных?

    fornit1917
    @fornit1917
    Может и встречали php.net/manual/ru/book.pdo.php
    Ответ написан
    Комментировать
  • Где взять класс php для работы с базами данных?

    PDO поддерживает все необходимые вам базы данных
    Ответ написан
    Комментировать
  • Как лучше распарсить строку?

    akarin
    @akarin
    var foo = "09.02.2011";
    var arr = foo.split(".");
    alert(arr[0])
    alert(arr[1])
    alert(arr[2])
    Ответ написан
    Комментировать
  • Как лучше распарсить строку?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    var parts = ('10.1.1975').split('.'),
    	date = new Date(parseInt(parts[2]), parseInt(parts[1]) - 1, parseInt(parts[0]));
    Ответ написан
    Комментировать