Функция набора данных. Table not drop columns [duplicate]

TL; DR Вам нужно предоставить подключение к запросу в функции mysqli_query.

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

Вот пример из https://www.w3schools.com/php/func_mysqli_query.asp


Второе сообщение об ошибке связано с тем, что $ email_check станет нулевым, если вызов msqli_query завершился неудачно, поэтому сбой msqli_num_rows завершился с ошибкой. Обратите внимание, что вам, очевидно, придется изменить все вызовы myqsli_query. Вот ссылка на руководство, если вы хотите больше узнать о вызове, http://php.net/manual/en/mysqli.query.php .

36
задан Henrik 20 March 2016 в 22:53
поделиться

1 ответ

Обновление: теперь это добавлено в документацию для ?copy в версии 1.9.3. Из NEWS :

  1. Перемещено ?copy на свою страницу справки и задокументировано, что dt_names <- copy(names(DT)) необходимо, чтобы dt_names не был изменен ссылку в результате обновления DT по ссылке (например: добавление нового столбца по ссылке). Закрывает # 512 . Благодаря Zach для этот вопрос SO и user1971988 для этот вопрос SO .

Часть вашего первого вопрос делает для меня немного непонятным относительно того, что вы действительно имеете в виду относительно оператора <- (по крайней мере, в контексте data.table), особенно для части: . В других случаях мы явно предупреждают, что & lt; - создает копии, как data.tables, так и data.frames.

Итак, прежде чем отвечать на ваш реальный вопрос, я кратко коснусь его здесь. В случае data.table a <- (присвоение) просто недостаточно для копирования a data.table. Например:

DT <- data.table(x = 1:5, y= 6:10)
# assign DT2 to DT
DT2 <- DT # assign by reference, no copy taken.
DT2[, z := 11:15]
# DT will also have the z column

Если вы хотите создать copy, вы должны явно указать его с помощью команды copy.

DT2 <- copy(DT) # copied content to DT2
DT2[, z := 11:15] # only DT2 is affected

From CauchyDistributedRV, Я понимаю, что вы имеете в виду назначение names(dt) <- ., которое приведет к предупреждению. Я оставлю это как таковой.


Теперь, чтобы ответить на ваш первый вопрос: похоже, что names1 <- names(DT) также ведет себя аналогично. Я до сих пор не думал об этом. Здесь очень полезна команда .Internal(inspect(.)):

.Internal(inspect(names1))
# @7fc86a851480 16 STRSXP g0c7 [MARK,NAM(2)] (len=2, tl=100)
#   @7fc86a069f68 09 CHARSXP g1c1 [MARK,gp=0x61] [ASCII] [cached] "x"
#   @7fc86a0f96d8 09 CHARSXP g1c1 [MARK,gp=0x61] [ASCII] [cached] "y"

.Internal(inspect(names(DT)))
# @7fc86a851480 16 STRSXP g0c7 [MARK,NAM(2)] (len=2, tl=100)
#   @7fc86a069f68 09 CHARSXP g1c1 [MARK,gp=0x61] [ASCII] [cached] "x"
#   @7fc86a0f96d8 09 CHARSXP g1c1 [MARK,gp=0x61] [ASCII] [cached] "y"

Здесь вы видите, что они указывают на ту же ячейку памяти @7fc86a851480. Даже truelength из names1 равно 100 (по умолчанию выделено в data.table, для этого нужно проверить ?alloc.col.

truelength(names1)
# [1] 100

Таким образом, назначение names1 <- names(dt) кажется происходят по ссылке. То есть, names1 указывает на то же место, что и указатель имен столбца dt.

Чтобы ответить на ваш второй вопрос: команда c(.), похоже, создает копию , поскольку нет проверки того, что результат содержимого из-за операции конкатенации различен . То есть, поскольку операция c(.) может изменять содержимое вектора, это немедленно приводит к тому, что «копия» сделана без , проверяя, не изменяется ли содержимое.

37
ответ дан Community 29 August 2018 в 01:21
поделиться
Другие вопросы по тегам:

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