function get_actor_info( $actor_id ) { global $pdo; $stmt = $pdo->prepare(' SELECT film_info, first_name, last_name FROM actor_info WHERE actor_id = :actor_id LIMIT 1'); $stmt->execute( array( ':actor_id' => $actor_id ) ); return $stmt->fetch( PDO::FETCH_OBJ ); }
в примере выше. Почему MYSQL выбирает WHERE … :actor_id
за которым следуют :
столбец и то же самое return $stmt->fetch( PDO::FETCH_OBJ );
Зачем использовать двойной столбец?
Строка: actor_id не является переменной. Это заполнитель для привязки фактического значения переменной $ actor_id к строке SQL.
Строка $ stmt – это запрос с заполнителем.
Фактическое значение предложения where передается с использованием метода execute () при выполнении.
Зачем вам это делать? PDO позволяет создавать подготовленные операторы, и его привязка помогает абстрагироваться от необходимости избегать строки переменной, как если бы вы просто конкатенировали $ actor_id в своей строке SQL.
Это помогает в повторном использовании и безопасности запросов.
:colunm_name
используется как заполнитель, как ?
,
Разница в том, что :column_name
вы можете использовать ассоциативный массив для привязки параметров.
Двойная двоеточия в конце совершенно другая. Это отдельный вид нотации, который полностью не связан с одним двоеточием в запросе.
Двойной двоеточие означает, что вы хотите получить доступ к константе или функции, определенной в классе. Если бы он был определен в объекте, вы использовали бы более знакомое ->
обозначение; в этом случае FETCH_OBJ
является константой внутри самого класса PDO, а не в каком-либо конкретном объекте PDO. Когда вы передаете эту константу в качестве аргумента для fetch()
, она сообщает функции возвращать строку в виде объекта, а не массива.
Двойной двоеточие называется оператором разрешения области . Это также имеет название «paamayim nekudotayim», который является ивритом для «двойной толстой кишки» и, вероятно, одним из наихудших вариантов обозначения имен в истории информатики.
первый вопрос в примере выше. Почему MYSQL выбирает WHERE … : actor _id, за которым следует: двоеточие
$stmt->execute( array( ':actor_id' => $actor_id ) );
этот оператор использует некоторые как переменные, вызывающие заполнитель, используя: двоеточие, вы можете проанализировать переменную в sql.
вторая часть..
return $stmt->fetch( PDO::FETCH_OBJ )
Зачем использовать двойной столбец?
это как ваше определение, нацеленное на конкретный объект в PDO .
Прочтите этот учебник, чтобы изучить основы PDO.