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 .
?copy
в версии 1.9.3. Из NEWS : blockquote>
- Перемещено
?copy
на свою страницу справки и задокументировано, чтоdt_names <- copy(names(DT))
необходимо, чтобыdt_names
не был изменен ссылку в результате обновленияDT
по ссылке (например: добавление нового столбца по ссылке). Закрывает # 512 . Благодаря Zach для этот вопрос SO и user1971988 для этот вопрос SO .
Часть вашего первого вопрос делает для меня немного непонятным относительно того, что вы действительно имеете в виду относительно оператора
<-
(по крайней мере, в контекстеdata.table
), особенно для части: . В других случаях мы явно предупреждают, что & lt; - создает копии, как data.tables, так и data.frames.Итак, прежде чем отвечать на ваш реальный вопрос, я кратко коснусь его здесь. В случае
data.table
a<-
(присвоение) просто недостаточно для копирования adata.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(.)
может изменять содержимое вектора, это немедленно приводит к тому, что «копия» сделана без , проверяя, не изменяется ли содержимое.