Что значит & quot; имеется ввиду при использовании bindValue () в PHP PDO?

Что значит : значит раньше id в приведенном ниже примере? Это необходимо?

$sth->bindValue(':id', $id, PDO::PARAM_INT);

Могу ли я сказать :id такое переменная?

Если PDO::PARAM_INT не нужно, зачем мне его использовать?

1

Решение

:id является именованным заполнителем для подготовленного запроса. Где-то еще в вашем коде есть запрос в виде:

SELECT stuff FROM something WHERE id = :id

который проходит через PDO prepare функция.

Если PDO::PARAM_INT не нужно, зачем мне его использовать?

Безопасность / согласованность данных. Увидеть PDO :: PARAM_INT важен в bindParam?

1

Другие решения

Что значит : значит раньше Я бы в приведенном ниже примере? Это необходимо?

$sth->bindValue(':id', $id, PDO::PARAM_INT);

Да, это необходимо. В PDOStatement :: bindValue определяется, что :id является именованным заполнителем вашего идентификатора параметра. Если бы вы использовали заполнители вопросительного знака, ваш идентификатор параметра был бы 1,

Форма вашего названного заполнителя должна быть похожа :id, Если указанный вами местозаполнитель не имеет этой формы, это приводит к ошибке.

  • Фатальная ошибка:…для правильного синтаксиса, чтобы использовать рядом WHERE id = ::id

Могу я сказать: id — это переменная?

Нет, :id твой parameter-identifier

Если PDO :: PARAM_INT не требуется, зачем мне его использовать?

Объявление ожидаемого типа данных является хорошей тактикой безопасности (не то, чтобы вы, конечно, могли полагаться на это только в целях безопасности). Если вы используете PDOStatement :: bindParam Вы можете определить длину типа данных, чтобы добавить больше безопасности.

0

Что означает: перед идентификатором в примере ниже? Это необходимо?

Ничего особенно. Это просто синтаксис. Как знак $ перед переменной php. В запросе необходимо, чтобы синтаксический анализатор отличал заполнитель от любой другой части запроса. И поэтому имеет смысл использовать точно такое же имя в bindValue ()

Могу я сказать: id — это переменная?

В значительной степени да. По сути, это переменная, но чтобы не путать ее с переменными php, она называется «заполнитель».

Если PDO :: PARAM_INT не требуется, зачем мне его использовать?

Это не имеет абсолютно никакого отношения к безопасности. Возможно, вы захотите использовать этот модификатор только для того, чтобы сообщить базе данных, что вы отправляете целое число. Говоря о mysql, эта база данных довольно терпима к типам данных, и почти везде вы можете опустить модификатор типа — в этом случае данные будут связаны в виде строки. Вы можете установить это явное явление довольно редко: только если вы используете заполнитель в предложении LIMIT или при отправке значения bigint, участвующего в математике.

0