Что значит :
значит раньше id
в приведенном ниже примере? Это необходимо?
$sth->bindValue(':id', $id, PDO::PARAM_INT);
Могу ли я сказать :id
такое переменная?
Если PDO::PARAM_INT
не нужно, зачем мне его использовать?
:id
является именованным заполнителем для подготовленного запроса. Где-то еще в вашем коде есть запрос в виде:
SELECT stuff FROM something WHERE id = :id
который проходит через PDO prepare
функция.
Если
PDO::PARAM_INT
не нужно, зачем мне его использовать?
Безопасность / согласованность данных. Увидеть PDO :: PARAM_INT важен в bindParam?
Что значит
:
значит раньше Я бы в приведенном ниже примере? Это необходимо?
$sth->bindValue(':id', $id, PDO::PARAM_INT);
Да, это необходимо. В PDOStatement :: bindValue определяется, что :id
является именованным заполнителем вашего идентификатора параметра. Если бы вы использовали заполнители вопросительного знака, ваш идентификатор параметра был бы 1
,
Форма вашего названного заполнителя должна быть похожа :id
, Если указанный вами местозаполнитель не имеет этой формы, это приводит к ошибке.
WHERE id = ::id
Могу я сказать: id — это переменная?
Нет, :id
твой parameter-identifier
Если PDO :: PARAM_INT не требуется, зачем мне его использовать?
Объявление ожидаемого типа данных является хорошей тактикой безопасности (не то, чтобы вы, конечно, могли полагаться на это только в целях безопасности). Если вы используете PDOStatement :: bindParam Вы можете определить длину типа данных, чтобы добавить больше безопасности.
Что означает: перед идентификатором в примере ниже? Это необходимо?
Ничего особенно. Это просто синтаксис. Как знак $ перед переменной php. В запросе необходимо, чтобы синтаксический анализатор отличал заполнитель от любой другой части запроса. И поэтому имеет смысл использовать точно такое же имя в bindValue ()
Могу я сказать: id — это переменная?
В значительной степени да. По сути, это переменная, но чтобы не путать ее с переменными php, она называется «заполнитель».
Если PDO :: PARAM_INT не требуется, зачем мне его использовать?
Это не имеет абсолютно никакого отношения к безопасности. Возможно, вы захотите использовать этот модификатор только для того, чтобы сообщить базе данных, что вы отправляете целое число. Говоря о mysql, эта база данных довольно терпима к типам данных, и почти везде вы можете опустить модификатор типа — в этом случае данные будут связаны в виде строки. Вы можете установить это явное явление довольно редко: только если вы используете заполнитель в предложении LIMIT или при отправке значения bigint, участвующего в математике.