Как я могу передать функции MySQL, как связывают параметры в подготовленном операторе?

Я пытаюсь сделать это:

$sth = $dbi->prepare('INSERT INTO table VALUES (?, ?, ?)');
$sth->execute(
    $var1,
    $var2 || 'NOW()',
    $var3
);

без любой удачи. Какие-либо идеи?

7
задан brian d foy 10 February 2010 в 02:34
поделиться

3 ответа

Если у вашего запроса заканчивается время запроса, вы мало что можете сделать. Возможно, ваши файлы слишком большие, и вам нужно будет разделить их на части на клиенте (с чем-то вроде Flash или Java или рамки загрузки, как pupload ).

Как только файл поступает в приложение, возникает другая проблема - ограничения хранилища данных. Здесь у вас есть два варианта:

  • вы можете использовать сервис BlobStore , который имеет довольно хороший API для обработки 50 мегабайт больших загрузок

  • вы можете использовать что-то вроде bigblobae , которые могут хранить практически неограниченный размер blobs в обычном хранилище данных appengine.

-121--2407974-

Мне не совсем ясно, что вы хотите, но если вы тестируете что-то для каждого предмета, произведенного во внутреннем цикле, любой может быть тем, что вы хотите ( документы )

>>> def f(n):  return n % 2
... 
>>> for x in range(10):
...     print 'x=', x
...     if f(x):
...         if any([y == 8 for y in range(x+2,10)]):
...             print 'yes'
... 
x= 0
x= 1
yes
x= 2
x= 3
yes
x= 4
x= 5
yes
x= 6
x= 7
x= 8
x= 9
-121--2843396-
$sth = $dbi->prepare('INSERT INTO table VALUES (?, COALESCE(?, NOW()), ?)');
$sth->execute(
    $var1,
    $var2,
    $var3
);
14
ответ дан 6 December 2019 в 10:00
поделиться

Функции не могут быть связанными параметрами. MySQL заключит их в кавычки, что не является правильным синтаксисом.

Ваши варианты:

  • DEFAULT CURRENT_TIMESTAMP - Если поле является полем TIMESTAMP, вы можете объявить, что по умолчанию оно будет иметь текущее время. Это не работает для полей DATETIME.
  • Используйте perl - $now = time2str('%Y-%m-%d %T', time);
3
ответ дан 6 December 2019 в 10:00
поделиться

Вы также можете использовать следующую кодировку.

$sth = $dbi->prepare('INSERT INTO table VALUES (?, COALESCE(?, NOW()), ?)');
$sth->bind_param($var1,$var2,$var3); 
$sth1=$sth->execute;
2
ответ дан 6 December 2019 в 10:00
поделиться
Другие вопросы по тегам:

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