использование аннулирует в подготовленном операторе mysqli

Вы можете сделать это следующим образом:

double d = 4.0;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d));
19
задан ceejayoz 6 March 2009 в 16:50
поделиться

2 ответа

Комментарии к документация PHP относительно mysqli_stmt::bind_param указывает, что передача в NULL не была легко возможна.

<час>

см. ответ @creatio: https://<час> stackoverflow.com/a/6892491/18771

Решения, предлагаемые в комментариях, делают некоторая предварительная подготовка работает над подготовленным оператором, заменяя эти "?" маркеры с "NULL" для каждого параметрического усилителя, который имеет значение PHP null. Измененная строка запроса затем используется.

следующая функция от комментарий пользователя 80119 :

function preparse_prepared($sQuery, &$saParams)
{
    $nPos = 0;

    $sRetval = $sQuery;
    foreach ($saParams as $x_Key => $Param)
    {
        //if we find no more ?'s we're done then
        if (($nPos = strpos($sQuery, '?', $nPos + 1)) === false)
        {
            break;
        }

        //this test must be done second, because we need to 
        //increment offsets of $nPos for each ?.
        //we have no need to parse anything that isn't NULL.
        if (!is_null($Param))
        {
            continue;
        }


        //null value, replace this ? with NULL.
        $sRetval = substr_replace($sRetval, 'NULL', $nPos, 1);

        //unset this element now
        unset($saParams[$x_Key]);
    }
    return $sRetval;
} 

(Это не действительно стиль кодирования, я выполнил бы в нем, но если это работает...)

5
ответ дан 30 November 2019 в 02:01
поделиться

рядом со мной, я сохраняю все параметры в массиве и передаю их в функцию Bind_param с помощью array_shift ($ myArray). NULL так принимается .. С.

0
ответ дан 30 November 2019 в 02:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: