1

我已经为 PHP 使用旧的 MySQL 库已有很长时间了,我终于屈服于使用 MySQLi。准备好的陈述似乎非常有用,所以我试图让他们出去玩。

现在我正在创建一些准备好的语句并全局绑定它们的参数,然后使用一个函数来执行它们,如下所示:

$stmt = $mysqli->prepare("INSERT ...");
$stmt->bind_param("ss", $var1, $var2);

function process($t) {
    global $mysqli, $stmt;
    $var1 = $t['var1'];
    $var2 = $t['var2'];
    $stmt->execute();
}

我遇到的问题是执行函数遇到变量仍然为空的错误。当我从中收集值时,我应该绑定/解除绑定$t吗?

4

2 回答 2

0

我认为放置这样的代码应该可以工作:(假设 $t array() 中的变量存在)

function process ($t) {
  global $mysqli; 
  $var1 = $t['var1'];     
  $var2 = $t['var2'];

  $stmt = $mysqli->prepare("INSERT ..."); 
  $stmt->bind_param("ss", $var1, $var2);  
  $stmt->execute();

}
于 2012-07-24T14:04:03.147 回答
-1

我真是个傻子:

$stmt = $mysqli->prepare("INSERT INTO table (col1, col2) VALUES(?, ?)");

function process($t) { 
    global $mysqli, $stmt;
    $var1 = $t['var1'];
    $var2 = $t['var2'];
    $stmt->bind_param("ss", $var1, $var2);
    $stmt->execute();
}

我认为 MySQLi 正在与变量进行一些魔术绑定。在这种情况下bind_param,只需将值放在准备好的语句中,而不是一味地声明某些变量“绑定”到语句中。

于 2012-07-24T14:05:33.417 回答