我使用PHP和MySQL与PDO。有时我需要准备一个语句,其中有一个变量(占位符)在此查询中多次使用。为什么PDO不允许具有相同名称的多个占位符?
例子:
SELECT * FROM messages WHERE from_id = :user OR to_id = :user
但是,如果我会尽量准备这个发言,所以我需要做的是这样一种方法,我将有一个错误:
SELECT * FROM messages WHERE from_id = :user1 OR to_id = :user2
要调用这个说法我需要这样一个阵列:
array('user1'=>$user_id, 'user2'=>$user_id);
它对我来说看起来很愚蠢!为什么MySQL(PDO?)不允许我多次使用一个占位符,并迫使我使用需要更多控制的额外变量?!
如果查询相对简单(如我上面发布的),这可以很容易地处理,但现在我建立了一个查询单个变量的5(!!!)使用。每次我添加占位符时,我都需要在很多地方检查代码,以确保它正常。
是否有任何设置或调整来绕过此?
谢谢YCS!我最好避免使用仿真,因为准备好的语句执行速度应该较慢。对? –
那么,仿真模式实际上*更快*但我不会说差异是显着的。上面的链接是我的文章,我讨论所有的利弊为每个模式 –
更快?!哇,意想不到的事......在这种情况下,我会去找一个关于这个的阅读......谢谢! –