如何将PDO命名的占位符与字符串的其余部分分离



我有一个PDO准备的语句,看起来像这样:

$STH = $DBH->("CREATE TABLE :prefixbase (table_structure)");

:前缀应替换为userprefix_。生成的SQL应该如下所示:CREATE TABLE userprefix_base(table structure)。如何将占位符与字符串的其余部分分开?

我想您需要在字符串上使用正则表达式或简单的find-replacement,经过这样的处理后,PDO对象可以将其用作适当的SQL命令。

这里有一个例子:

$subject = "CREATE TABLE :prefixbase(table_structure)";
$sql = preg_replace('/(:prefix)/', 'userprefix_', $subject);
// or
$sql = str_replace(':prefix', 'userprefix_', $subject);

附言:我希望我能正确理解你的要求。

这个怎么样:

$placeholder="userprefix_";
$stmt = $pdo->prepare("CREATE TABLE ".$placeholder."base (table_structure)");

除非该前缀应该在准备好语句后更改。如果不准备另一份声明,这是行不通的。

最新更新