假设我想选择记录在哪里Id = 30.准备语句允许两种绑定参数的方式:
问号
$id = 30;
$q = $conn->prepare("SELECT * FROM pdo_db WHERE id > ?");
$q->execute(array($id)); // Here above ID will be passed
Run Code Online (Sandbox Code Playgroud)
命名参数
$sth = $conn->prepare("SELECT `id`, `title` FROM `pdo_db` WHERE `id` > :id");
$sth->execute(array(
':id' => 30
));
Run Code Online (Sandbox Code Playgroud)
两者都工作正常,并给出准确的结果,但我无法得到这两者之间的确切差异,也不能在我应该使用其中一个?
我使用我为所有项目构建的动态数据库类.刚刚开始一个新的,课程给我一个打嗝.这是我的代码,而不是细节.但我通过最少的代码重新创建了错误.
function vref($arr) {
if (strnatcmp(phpversion(),'5.3') >= 0) {//Reference is required for PHP 5.3+
$refs = array();
foreach($arr as $key => $value) $refs[$key] = &$arr[$key];
return $refs;
}
return $arr;
}
$bind = 's,i,i,i,i, i,s,s,s,s, i,s,s';
$reward = ( $data['reward'] ) ? $data['reward'] : '0';
$special = '0';
$icon = '0';
$mastery = ( @$data['mastery'] ) ? 'Yes' : 'No';
$added = time();
settype($added, 'string')
$arr = array(
$bind,
$data['name'],
intval($data['cost']),
intval($data['per']),
intval($data['serv']),
intval($data['earns']),
intval($data['cp']),
$data['cookTime'],
$reward,
$special,
$icon,
intval($data['type']), …Run Code Online (Sandbox Code Playgroud)