相关疑难解决方法(0)

使用之间的差异?并且:准备声明中的参数

假设我想选择记录在哪里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)

两者都工作正常,并给出准确的结果,但我无法得到这两者之间的确切差异,也不能在我应该使用其中一个?

php database pdo prepared-statement named-parameters

9
推荐指数
1
解决办法
947
查看次数

类型定义字符串与绑定变量的数量不匹配

我使用我为所有项目构建的动态数据库类.刚刚开始一个新的,课程给我一个打嗝.这是我的代码,而不是细节.但我通过最少的代码重新创建了错误.

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)

php mysqli prepared-statement

3
推荐指数
1
解决办法
7078
查看次数