Есть ли привязка параметров SQL для массивов?

Возможно, есть способ адаптировать то, что вы делаете, к событиям перетаскивания, чтобы достичь этого результата, но я не смог заставить его работать. Вот что-то, что делает то же самое, но с mousedown, mouseup и mousemove.

var crop = document.querySelector(".image .crop");

crop.addEventListener("mousedown", function(event) {
  document.onmousemove = function(event) {
    moveBox(event);
  };
  document.onmouseup = function(event) {
    stopMoving(event);
  }
});

function moveBox(event) {
  event.preventDefault();
  var mouseoffset = [event.clientX, event.clientY];
  crop.style.left = mouseoffset[0] + "px";
  crop.style.top = mouseoffset[1] + "px";
}

function stopMoving(event) {
  document.onmousemove = null;
  document.onmouseup = null;
}
.image {
  position: relative;
  width: 400px;
  height: 400px;
  overflow: hidden;
  background: #C00;
}

.image .crop {
  position: absolute;
  width: 150px;
  height: 150px;
  background: rgba(64, 168, 36, 1);
}
<div class="image">
  <div class="crop" draggable="true"></div>
</div>

19
задан Community 23 May 2017 в 11:47
поделиться

7 ответов

Вы указываете, что "это - SQL для запроса с одним параметром" - который не будет работать, когда Вы захотите много параметров. Это - боль для контакта с, конечно. Два других изменения к тому, что уже было предложено:

1) Используйте DBI-> кавычка вместо заполнителей.

my $sql = "select foo from bar where baz in ("
           . join(",", map { $dbh->quote($_) } @bazs)
           . ")";
my $data = $dbh->selectall_arrayref($sql);

2) Используйте ORM, чтобы сделать этот вид низкоуровневого материала для Вас. DBIx:: Класс или Rose:: DB:: Объект, например.

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

Я делаю что-то как:

my $dbh = DBI->connect( ... );
my @vals= ( 1,2,3,4,5 );
my $sql = 'SELECT * FROM table WHERE id IN (' . join( ',', map { '?' } @vals ) . ')';
my $sth = $dbh->prepare( $sql );
$sth->execute( @vals );
9
ответ дан 30 November 2019 в 02:52
поделиться

И все же другой способ создать SQL состоит в том, чтобы использовать что-то как SQL:: Краткий обзор ....

use SQL::Abstract;
my $sql    = SQL::Abstract->new;
my $values = [ 1..3 ];
my $query  = $sql->select( 'table', '*', { id => { -in => $values } } );

say $query;   # => SELECT * FROM table WHERE ( id IN ( ?, ?, ? ) )
6
ответ дан 30 November 2019 в 02:52
поделиться

В Python я всегда заканчивал тем, что делал что-то как:

query = 'select * from junk where junk.id in ('
for id in junkids:
  query = query + '?,'
query = query + ')'

cursor.execute(query, junkids)

..., который по существу создает запрос с один'?' для каждого элемента списка.

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

[редактирование для создания кода легче понять для людей не-Python. Существует ошибка, где запрос будет иметь дополнительную запятую после последнего?, который я оставлю внутри, потому что фиксация его просто объединила бы общее представление в облако]

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

С плоскостью DBI необходимо было бы создать SQL сами, как предложено выше. DBIx:: Простой (обертка для DBI) делает это для Вас автоматически использование'??' нотация:

$db->query("select * from foo where bar in (??)", @values);
4
ответ дан 30 November 2019 в 02:52
поделиться

Если Вам не нравится карта там, можно использовать 'x' оператор:

my $params = join ', ' => ('?') x @foo;
my $sql    = "SELECT * FROM table WHERE id IN ($params)";
my $sth    = $dbh->prepare( $sql );
$sth->execute( @foo );

круглые скобки необходимы вокруг'?' потому что это вынуждает 'x' быть в контексте списка.

Read "perldoc perlop" и поиск 'Двоичного файла "x"' для получения дополнительной информации (это находится в разделе "Multiplicative Operators").

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

Я использую DBIx:: DWIW. Это содержит функцию под названием InList (). Это создаст часть SQL, который необходим для списка. Однако это только работает, если у Вас есть весь свой SQL в программе вместо внешней стороны в отдельном файле.

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

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