需要一些PHP PDO的解释。。。。!

需要一些PHP PDO的解释。。。。!,php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,在上面的示例中,为什么MYSQL选择WHERE:actor_id后跟此:列和return$stmt->fetch(PDO::fetch_OBJ)中的相同内容为什么使用双栏?字符串:actor\u id不是变量。它是一个占位符,用于将实际变量$actor\u id值绑定到SQL字符串 $stmt字符串是带有占位符的查询 where子句的实际值在执行时使用execute()方法传递 你为什么要这么做?PDO允许准备好的语句,它的绑定有助于抽象出必须转义变量字符串的情况,就像将$actor_id连接到

在上面的示例中,为什么MYSQL选择WHERE
:actor_id
后跟此
列和
return$stmt->fetch(PDO::fetch_OBJ)中的相同内容为什么使用双栏?

字符串:actor\u id不是变量。它是一个占位符,用于将实际变量$actor\u id值绑定到SQL字符串

$stmt字符串是带有占位符的查询

where子句的实际值在执行时使用execute()方法传递

你为什么要这么做?PDO允许准备好的语句,它的绑定有助于抽象出必须转义变量字符串的情况,就像将$actor_id连接到SQL字符串中一样


这有助于查询的可重用性和安全性。

:colunm_name
用作占位符,就像
一样


区别在于
:column_name
您可以使用关联数组绑定参数。

请通过教程学习PDO的基本原理

结尾的双冒号完全不同。它是一种单独的表示法,与查询中的单个冒号完全无关

双冒号表示要访问在类中定义的常量或函数。如果它是在一个对象中定义的,你会使用更熟悉的
->
符号;在本例中,
FETCH_OBJ
是PDO类本身内部的常量,而不是任何特定PDO对象中的常量。当您将该常量作为参数传递给
fetch()
时,它会告诉函数以对象而不是数组的形式返回一行


双冒号称为双冒号。它还被称为“paamayim nekudotayim”,希伯来语中“双冒号”的意思,可能是计算机科学史上最糟糕的命名约定之一

上面示例中的第一个问题,为什么MYSQL选择WHERE:参与者\u id后跟:冒号

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 );
}
此语句使用一些类似于调用占位符的变量,通过使用:冒号,您可以将变量解析为sql

第二部分

return$stmt->fetch(PDO::fetch_OBJ)
为什么要使用双栏


这是因为您的定义针对PDO中的特定对象

请停止在代码中使用
global
变量。
$stmt->execute( array( ':actor_id' => $actor_id ) );