2010-12-06 211 views
1

我越来越痴迷。我的工作是第一次用事先准备好的声明,我相信我已阅读的地方,你可以准备像声明:准备好的声明mysqli

$stmt = $db->prepare("INSERT INTO {$table} (:var1, :var2) VALUES (:val1, :val2)"); 
$stmt->bind_param(':var1', $var1); 
$stmt->bind_param(':var2', $var2); 
$stmt->bind_param(':val1', $val1); 
$stmt->bind_param(':val2', $val2); 
$stmt->execute(); 

或类似的东西。我记得我已经读过,你可以用':'作为前缀,用具体的名称来称呼变量。但我真的找不到这样的例子。我阅读了PHP手册,并且找不到任何这个东西的样本。 这是对的还是我梦到了?

常见问题

如果你想知道为什么我不能用简单的“?”方法:

$stmt = $db->prepare("INSERT INTO {$table} (?, ?, ?, ?, ?, ?) VALUES (?, ?, ?, ?, ?, ?)"); 

这很难写。

+0

Pigarelli - 你是否指`select @current_time:= NOW();选择@current_time;`? PS:不太确定列上的绑定是允许的 – ajreal 2010-12-06 13:12:00

回答

1

您不能在列名列表和VALUES列表中执行:var1,:var2,:varX一件事。其次,PDO接受命名参数绑定。

参见PHP Data ObjectsPDO::prepare中的示例。