Doctrine ? 理论上的质疑意味着什么?

Doctrine ? 理论上的质疑意味着什么?,doctrine,Doctrine,我想知道这个问题是什么意思: $blogPost = Doctrine_Query::create()->from('BlogPost p')->where('p.slug = ?', 'doctrine-released')->execute(); 有人能解释一下吗?给我 谢谢我猜,但我敢打赌,?只是表示“这里有一个变量,我稍后会填充它”的一种方式,就像其他SQL变体中的普通绑定一样。在您的示例中,这意味着?在执行时被扩展为“发布原则”。换句话说,查询变成,其中p.slug

我想知道这个问题是什么意思:

$blogPost = Doctrine_Query::create()->from('BlogPost p')->where('p.slug = ?', 'doctrine-released')->execute();
有人能解释一下吗?给我


谢谢

我猜,但我敢打赌,
只是表示“这里有一个变量,我稍后会填充它”的一种方式,就像其他SQL变体中的普通绑定一样。在您的示例中,这意味着
在执行时被扩展为“发布原则”。换句话说,查询变成
,其中p.slug='doctrine released'
我猜,但我敢打赌
只是一种表示“这里有一个变量,我稍后将填充它”的方式,就像其他SQL变体中的普通绑定一样。在您的示例中,这意味着
在执行时被扩展为“发布原则”。换句话说,查询变成
,其中p.slug='doctrine released'

如果有一个变量作为参数,则不需要以其他方式使用'?'

例如:

$blogPost=Doctrine_Query::create()->from('blogPost p')->其中('p.slug=?',$Doctrine released)->execute()

如果字符串作为参数


$blogPost=Doctrine_Query::create()->from('blogPost p')->其中('p.slug'='Doctrine released')->execute()

如果有一个变量作为参数,则不需要使用“?”来表示其他方面

例如:

$blogPost=Doctrine_Query::create()->from('blogPost p')->其中('p.slug=?',$Doctrine released)->execute()

如果字符串作为参数


$blogPost=Doctrine_Query::create()->from('blogPost p')->其中('p.slug'='Doctrine released')->execute()

但是为什么不直接写p.slug='doctrine released'。这有什么好处?因为你可以利用事先准备好的陈述的优点。检查一下:在这个确切的例子中,似乎不值得使用预先准备好的语句。但是,当您的数据库有数千个用户时,他们都使用完全相同的prepared语句,但使用不同的绑定变量执行时,您将节省大量的分析时间和内存。绑定到prepared语句的参数也会被转义,从而使代码更安全。Doctrine缓存其DQL查询,尽管在小规模的实现中不那么引人注目,但使用准备好的语句仍然是值得的(因为它很容易),因为这样做可以判断一个查询何时与另一个查询相同,只是更改了一个属性值,因此可以重复使用/优化等。但是为什么不只写p.slug='doctrine released'。这有什么好处?因为你可以利用事先准备好的陈述的优点。检查一下:在这个确切的例子中,似乎不值得使用预先准备好的语句。但是,当您的数据库有数千个用户时,他们都使用完全相同的prepared语句,但使用不同的绑定变量执行时,您将节省大量的分析时间和内存。绑定到prepared语句的参数也会被转义,从而使代码更安全。Doctrine缓存其DQL查询,尽管在小规模的实现中不那么引人注目,但使用准备好的语句仍然是值得的(因为它很容易),因为这样做可以判断一个查询何时与另一个查询相同,只是更改了一个属性值,因此可以重用/优化等。